text: /*!
   * perfect-scrollbar v1.4.0
   * (c) 2018 Hyunje Jun
   * @license MIT
   */
  !function (t, e) {
      "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.PerfectScrollbar = e()
  }(this, function () {
      "use strict";
  
      function t(t) {
          return getComputedStyle(t)
      }
  
      function e(t, e) {
          for (var i in e) {
              var r = e[i];
              "number" == typeof r && (r += "px"), t.style[i] = r
          }
          return t
      }
  
      function i(t) {
          var e = document.createElement("div");
          return e.className = t, e
      }
  
      function r(t, e) {
          if (!v) throw new Error("No element matching method supported");
          return v.call(t, e)
      }
  
      function l(t) {
          t.remove ? t.remove() : t.parentNode && t.parentNode.removeChild(t)
      }
  
      function n(t, e) {
          return Array.prototype.filter.call(t.children, function (t) {
              return r(t, e)
          })
      }
  
      function o(t, e) {
          var i = t.element.classList, r = m.state.scrolling(e);
          i.contains(r) ? clearTimeout(Y[e]) : i.add(r)
      }
  
      function s(t, e) {
          Y[e] = setTimeout(function () {
              return t.isAlive && t.element.classList.remove(m.state.scrolling(e))
          }, t.settings.scrollingThreshold)
      }
  
      function a(t, e) {
          o(t, e), s(t, e)
      }
  
      function c(t) {
          if ("function" == typeof window.CustomEvent) return new CustomEvent(t);
          var e = document.createEvent("CustomEvent");
          return e.initCustomEvent(t, !1, !1, void 0), e
      }
  
      function h(t, e, i, r, l) {
          var n = i[0], o = i[1], s = i[2], h = i[3], u = i[4], d = i[5];
          void 0 === r && (r = !0), void 0 === l && (l = !1);
          var f = t.element;
          t.reach[h] = null, f[s] < 1 && (t.reach[h] = "start"), f[s] > t[n] - t[o] - 1 && (t.reach[h] = "end"), e && (f.dispatchEvent(c("ps-scroll-" + h)), e < 0 ? f.dispatchEvent(c("ps-scroll-" + u)) : e > 0 && f.dispatchEvent(c("ps-scroll-" + d)), r && a(t, h)), t.reach[h] && (e || l) && f.dispatchEvent(c("ps-" + h + "-reach-" + t.reach[h]))
      }
  
      function u(t) {
          return parseInt(t, 10) || 0
      }
  
      function d(t) {
          return r(t, "input,[contenteditable]") || r(t, "select,[contenteditable]") || r(t, "textarea,[contenteditable]") || r(t, "button,[contenteditable]")
      }
  
      function f(e) {
          var i = t(e);
          return u(i.width) + u(i.paddingLeft) + u(i.paddingRight) + u(i.borderLeftWidth) + u(i.borderRightWidth)
      }
  
      function p(t, e) {
          return t.settings.minScrollbarLength && (e = Math.max(e, t.settings.minScrollbarLength)), t.settings.maxScrollbarLength && (e = Math.min(e, t.settings.maxScrollbarLength)), e
      }
  
      function b(t, i) {
          var r = {width: i.railXWidth}, l = Math.floor(t.scrollTop);
          i.isRtl ? r.left = i.negativeScrollAdjustment + t.scrollLeft + i.containerWidth - i.contentWidth : r.left = t.scrollLeft, i.isScrollbarXUsingBottom ? r.bottom = i.scrollbarXBottom - l : r.top = i.scrollbarXTop + l, e(i.scrollbarXRail, r);
          var n = {top: l, height: i.railYHeight};
          i.isScrollbarYUsingRight ? i.isRtl ? n.right = i.contentWidth - (i.negativeScrollAdjustment + t.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth : n.right = i.scrollbarYRight - t.scrollLeft : i.isRtl ? n.left = i.negativeScrollAdjustment + t.scrollLeft + 2 * i.containerWidth - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth : n.left = i.scrollbarYLeft + t.scrollLeft, e(i.scrollbarYRail, n), e(i.scrollbarX, {
              left: i.scrollbarXLeft,
              width: i.scrollbarXWidth - i.railBorderXWidth
          }), e(i.scrollbarY, {top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth})
      }
  
      function g(t, e) {
          function i(e) {
              b[d] = g + Y * (e[a] - v), o(t, f), R(t), e.stopPropagation(), e.preventDefault()
          }
  
          function r() {
              s(t, f), t[p].classList.remove(m.state.clicking), t.event.unbind(t.ownerDocument, "mousemove", i)
          }
  
          var l = e[0], n = e[1], a = e[2], c = e[3], h = e[4], u = e[5], d = e[6], f = e[7], p = e[8], b = t.element,
              g = null, v = null, Y = null;
          t.event.bind(t[h], "mousedown", function (e) {
              g = b[d], v = e[a], Y = (t[n] - t[l]) / (t[c] - t[u]), t.event.bind(t.ownerDocument, "mousemove", i), t.event.once(t.ownerDocument, "mouseup", r), t[p].classList.add(m.state.clicking), e.stopPropagation(), e.preventDefault()
          })
      }
  
      var v = "undefined" != typeof Element && (Element.prototype.matches || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector),
          m = {
              main: "ps", element: {
                  thumb: function (t) {
                      return "ps__thumb-" + t
                  }, rail: function (t) {
                      return "ps__rail-" + t
                  }, consuming: "ps__child--consume"
              }, state: {
                  focus: "ps--focus", clicking: "ps--clicking", active: function (t) {
                      return "ps--active-" + t
                  }, scrolling: function (t) {
                      return "ps--scrolling-" + t
                  }
              }
          }, Y = {x: null, y: null}, X = function (t) {
              this.element = t, this.handlers = {}
          }, w = {isEmpty: {configurable: !0}};
      X.prototype.bind = function (t, e) {
          void 0 === this.handlers[t] && (this.handlers[t] = []), this.handlers[t].push(e), this.element.addEventListener(t, e, !1)
      }, X.prototype.unbind = function (t, e) {
          var i = this;
          this.handlers[t] = this.handlers[t].filter(function (r) {
              return !(!e || r === e) || (i.element.removeEventListener(t, r, !1), !1)
          })
      }, X.prototype.unbindAll = function () {
          var t = this;
          for (var e in t.handlers) t.unbind(e)
      }, w.isEmpty.get = function () {
          var t = this;
          return Object.keys(this.handlers).every(function (e) {
              return 0 === t.handlers[e].length
          })
      }, Object.defineProperties(X.prototype, w);
      var y = function () {
          this.eventElements = []
      };
      y.prototype.eventElement = function (t) {
          var e = this.eventElements.filter(function (e) {
              return e.element === t
          })[0];
          return e || (e = new X(t), this.eventElements.push(e)), e
      }, y.prototype.bind = function (t, e, i) {
          this.eventElement(t).bind(e, i)
      }, y.prototype.unbind = function (t, e, i) {
          var r = this.eventElement(t);
          r.unbind(e, i), r.isEmpty && this.eventElements.splice(this.eventElements.indexOf(r), 1)
      }, y.prototype.unbindAll = function () {
          this.eventElements.forEach(function (t) {
              return t.unbindAll()
          }), this.eventElements = []
      }, y.prototype.once = function (t, e, i) {
          var r = this.eventElement(t), l = function (t) {
              r.unbind(e, l), i(t)
          };
          r.bind(e, l)
      };
      var W = function (t, e, i, r, l) {
          void 0 === r && (r = !0), void 0 === l && (l = !1);
          var n;
          if ("top" === e) n = ["contentHeight", "containerHeight", "scrollTop", "y", "up", "down"]; else {
              if ("left" !== e) throw new Error("A proper axis should be provided");
              n = ["contentWidth", "containerWidth", "scrollLeft", "x", "left", "right"]
          }
          h(t, i, n, r, l)
      }, L = {
          isWebKit: "undefined" != typeof document && "WebkitAppearance" in document.documentElement.style,
          supportsTouch: "undefined" != typeof window && ("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch),
          supportsIePointer: "undefined" != typeof navigator && navigator.msMaxTouchPoints,
          isChrome: "undefined" != typeof navigator && /Chrome/i.test(navigator && navigator.userAgent)
      }, R = function (t) {
          var e = t.element, i = Math.floor(e.scrollTop);
          t.containerWidth = e.clientWidth, t.containerHeight = e.clientHeight, t.contentWidth = e.scrollWidth, t.contentHeight = e.scrollHeight, e.contains(t.scrollbarXRail) || (n(e, m.element.rail("x")).forEach(function (t) {
              return l(t)
          }), e.appendChild(t.scrollbarXRail)), e.contains(t.scrollbarYRail) || (n(e, m.element.rail("y")).forEach(function (t) {
              return l(t)
          }), e.appendChild(t.scrollbarYRail)), !t.settings.suppressScrollX && t.containerWidth + t.settings.scrollXMarginOffset < t.contentWidth ? (t.scrollbarXActive = !0, t.railXWidth = t.containerWidth - t.railXMarginWidth, t.railXRatio = t.containerWidth / t.railXWidth, t.scrollbarXWidth = p(t, u(t.railXWidth * t.containerWidth / t.contentWidth)), t.scrollbarXLeft = u((t.negativeScrollAdjustment + e.scrollLeft) * (t.railXWidth - t.scrollbarXWidth) / (t.contentWidth - t.containerWidth))) : t.scrollbarXActive = !1, !t.settings.suppressScrollY && t.containerHeight + t.settings.scrollYMarginOffset < t.contentHeight ? (t.scrollbarYActive = !0, t.railYHeight = t.containerHeight - t.railYMarginHeight, t.railYRatio = t.containerHeight / t.railYHeight, t.scrollbarYHeight = p(t, u(t.railYHeight * t.containerHeight / t.contentHeight)), t.scrollbarYTop = u(i * (t.railYHeight - t.scrollbarYHeight) / (t.contentHeight - t.containerHeight))) : t.scrollbarYActive = !1, t.scrollbarXLeft >= t.railXWidth - t.scrollbarXWidth && (t.scrollbarXLeft = t.railXWidth - t.scrollbarXWidth), t.scrollbarYTop >= t.railYHeight - t.scrollbarYHeight && (t.scrollbarYTop = t.railYHeight - t.scrollbarYHeight), b(e, t), t.scrollbarXActive ? e.classList.add(m.state.active("x")) : (e.classList.remove(m.state.active("x")), t.scrollbarXWidth = 0, t.scrollbarXLeft = 0, e.scrollLeft = 0), t.scrollbarYActive ? e.classList.add(m.state.active("y")) : (e.classList.remove(m.state.active("y")), t.scrollbarYHeight = 0, t.scrollbarYTop = 0, e.scrollTop = 0)
      }, T = {
          "click-rail": function (t) {
              t.event.bind(t.scrollbarY, "mousedown", function (t) {
                  return t.stopPropagation()
              }), t.event.bind(t.scrollbarYRail, "mousedown", function (e) {
                  var i = e.pageY - window.pageYOffset - t.scrollbarYRail.getBoundingClientRect().top > t.scrollbarYTop ? 1 : -1;
                  t.element.scrollTop += i * t.containerHeight, R(t), e.stopPropagation()
              }), t.event.bind(t.scrollbarX, "mousedown", function (t) {
                  return t.stopPropagation()
              }), t.event.bind(t.scrollbarXRail, "mousedown", function (e) {
                  var i = e.pageX - window.pageXOffset - t.scrollbarXRail.getBoundingClientRect().left > t.scrollbarXLeft ? 1 : -1;
                  t.element.scrollLeft += i * t.containerWidth, R(t), e.stopPropagation()
              })
          }, "drag-thumb": function (t) {
              g(t, ["containerWidth", "contentWidth", "pageX", "railXWidth", "scrollbarX", "scrollbarXWidth", "scrollLeft", "x", "scrollbarXRail"]), g(t, ["containerHeight", "contentHeight", "pageY", "railYHeight", "scrollbarY", "scrollbarYHeight", "scrollTop", "y", "scrollbarYRail"])
          }, keyboard: function (t) {
              function e(e, r) {
                  var l = Math.floor(i.scrollTop);
                  if (0 === e) {
                      if (!t.scrollbarYActive) return !1;
                      if (0 === l && r > 0 || l >= t.contentHeight - t.containerHeight && r < 0) return !t.settings.wheelPropagation
                  }
                  var n = i.scrollLeft;
                  if (0 === r) {
                      if (!t.scrollbarXActive) return !1;
                      if (0 === n && e < 0 || n >= t.contentWidth - t.containerWidth && e > 0) return !t.settings.wheelPropagation
                  }
                  return !0
              }
  
              var i = t.element, l = function () {
                  return r(i, ":hover")
              }, n = function () {
                  return r(t.scrollbarX, ":focus") || r(t.scrollbarY, ":focus")
              };
              t.event.bind(t.ownerDocument, "keydown", function (r) {
                  if (!(r.isDefaultPrevented && r.isDefaultPrevented() || r.defaultPrevented) && (l() || n())) {
                      var o = document.activeElement ? document.activeElement : t.ownerDocument.activeElement;
                      if (o) {
                          if ("IFRAME" === o.tagName) o = o.contentDocument.activeElement; else for (; o.shadowRoot;) o = o.shadowRoot.activeElement;
                          if (d(o)) return
                      }
                      var s = 0, a = 0;
                      switch (r.which) {
                          case 37:
                              s = r.metaKey ? -t.contentWidth : r.altKey ? -t.containerWidth : -30;
                              break;
                          case 38:
                              a = r.metaKey ? t.contentHeight : r.altKey ? t.containerHeight : 30;
                              break;
                          case 39:
                              s = r.metaKey ? t.contentWidth : r.altKey ? t.containerWidth : 30;
                              break;
                          case 40:
                              a = r.metaKey ? -t.contentHeight : r.altKey ? -t.containerHeight : -30;
                              break;
                          case 32:
                              a = r.shiftKey ? t.containerHeight : -t.containerHeight;
                              break;
                          case 33:
                              a = t.containerHeight;
                              break;
                          case 34:
                              a = -t.containerHeight;
                              break;
                          case 36:
                              a = t.contentHeight;
                              break;
                          case 35:
                              a = -t.contentHeight;
                              break;
                          default:
                              return
                      }
                      t.settings.suppressScrollX && 0 !== s || t.settings.suppressScrollY && 0 !== a || (i.scrollTop -= a, i.scrollLeft += s, R(t), e(s, a) && r.preventDefault())
                  }
              })
          }, wheel: function (e) {
              function i(t, i) {
                  var r = Math.floor(o.scrollTop), l = 0 === o.scrollTop, n = r + o.offsetHeight === o.scrollHeight,
                      s = 0 === o.scrollLeft, a = o.scrollLeft + o.offsetWidth === o.scrollWidth;
                  return !(Math.abs(i) > Math.abs(t) ? l || n : s || a) || !e.settings.wheelPropagation
              }
  
              function r(t) {
                  var e = t.deltaX, i = -1 * t.deltaY;
                  return void 0 !== e && void 0 !== i || (e = -1 * t.wheelDeltaX / 6, i = t.wheelDeltaY / 6), t.deltaMode && 1 === t.deltaMode && (e *= 10, i *= 10), e !== e && i !== i && (e = 0, i = t.wheelDelta), t.shiftKey ? [-i, -e] : [e, i]
              }
  
              function l(e, i, r) {
                  if (!L.isWebKit && o.querySelector("select:focus")) return !0;
                  if (!o.contains(e)) return !1;
                  for (var l = e; l && l !== o;) {
                      if (l.classList.contains(m.element.consuming)) return !0;
                      var n = t(l);
                      if ([n.overflow, n.overflowX, n.overflowY].join("").match(/(scroll|auto)/)) {
                          var s = l.scrollHeight - l.clientHeight;
                          if (s > 0 && !(0 === l.scrollTop && r > 0 || l.scrollTop === s && r < 0)) return !0;
                          var a = l.scrollWidth - l.clientWidth;
                          if (a > 0 && !(0 === l.scrollLeft && i < 0 || l.scrollLeft === a && i > 0)) return !0
                      }
                      l = l.parentNode
                  }
                  return !1
              }
  
              function n(t) {
                  var n = r(t), s = n[0], a = n[1];
                  if (!l(t.target, s, a)) {
                      var c = !1;
                      e.settings.useBothWheelAxes ? e.scrollbarYActive && !e.scrollbarXActive ? (a ? o.scrollTop -= a * e.settings.wheelSpeed : o.scrollTop += s * e.settings.wheelSpeed, c = !0) : e.scrollbarXActive && !e.scrollbarYActive && (s ? o.scrollLeft += s * e.settings.wheelSpeed : o.scrollLeft -= a * e.settings.wheelSpeed, c = !0) : (o.scrollTop -= a * e.settings.wheelSpeed, o.scrollLeft += s * e.settings.wheelSpeed), R(e), (c = c || i(s, a)) && !t.ctrlKey && (t.stopPropagation(), t.preventDefault())
                  }
              }
  
              var o = e.element;
              void 0 !== window.onwheel ? e.event.bind(o, "wheel", n) : void 0 !== window.onmousewheel && e.event.bind(o, "mousewheel", n)
          }, touch: function (e) {
              function i(t, i) {
                  var r = Math.floor(h.scrollTop), l = h.scrollLeft, n = Math.abs(t), o = Math.abs(i);
                  if (o > n) {
                      if (i < 0 && r === e.contentHeight - e.containerHeight || i > 0 && 0 === r) return 0 === window.scrollY && i > 0 && L.isChrome
                  } else if (n > o && (t < 0 && l === e.contentWidth - e.containerWidth || t > 0 && 0 === l)) return !0;
                  return !0
              }
  
              function r(t, i) {
                  h.scrollTop -= i, h.scrollLeft -= t, R(e)
              }
  
              function l(t) {
                  return t.targetTouches ? t.targetTouches[0] : t
              }
  
              function n(t) {
                  return !(t.pointerType && "pen" === t.pointerType && 0 === t.buttons || (!t.targetTouches || 1 !== t.targetTouches.length) && (!t.pointerType || "mouse" === t.pointerType || t.pointerType === t.MSPOINTER_TYPE_MOUSE))
              }
  
              function o(t) {
                  if (n(t)) {
                      var e = l(t);
                      u.pageX = e.pageX, u.pageY = e.pageY, d = (new Date).getTime(), null !== p && clearInterval(p)
                  }
              }
  
              function s(e, i, r) {
                  if (!h.contains(e)) return !1;
                  for (var l = e; l && l !== h;) {
                      if (l.classList.contains(m.element.consuming)) return !0;
                      var n = t(l);
                      if ([n.overflow, n.overflowX, n.overflowY].join("").match(/(scroll|auto)/)) {
                          var o = l.scrollHeight - l.clientHeight;
                          if (o > 0 && !(0 === l.scrollTop && r > 0 || l.scrollTop === o && r < 0)) return !0;
                          var s = l.scrollLeft - l.clientWidth;
                          if (s > 0 && !(0 === l.scrollLeft && i < 0 || l.scrollLeft === s && i > 0)) return !0
                      }
                      l = l.parentNode
                  }
                  return !1
              }
  
              function a(t) {
                  if (n(t)) {
                      var e = l(t), o = {pageX: e.pageX, pageY: e.pageY}, a = o.pageX - u.pageX, c = o.pageY - u.pageY;
                      if (s(t.target, a, c)) return;
                      r(a, c), u = o;
                      var h = (new Date).getTime(), p = h - d;
                      p > 0 && (f.x = a / p, f.y = c / p, d = h), i(a, c) && t.preventDefault()
                  }
              }
  
              function c() {
                  e.settings.swipeEasing && (clearInterval(p), p = setInterval(function () {
                      e.isInitialized ? clearInterval(p) : f.x || f.y ? Math.abs(f.x) < .01 && Math.abs(f.y) < .01 ? clearInterval(p) : (r(30 * f.x, 30 * f.y), f.x *= .8, f.y *= .8) : clearInterval(p)
                  }, 10))
              }
  
              if (L.supportsTouch || L.supportsIePointer) {
                  var h = e.element, u = {}, d = 0, f = {}, p = null;
                  L.supportsTouch ? (e.event.bind(h, "touchstart", o), e.event.bind(h, "touchmove", a), e.event.bind(h, "touchend", c)) : L.supportsIePointer && (window.PointerEvent ? (e.event.bind(h, "pointerdown", o), e.event.bind(h, "pointermove", a), e.event.bind(h, "pointerup", c)) : window.MSPointerEvent && (e.event.bind(h, "MSPointerDown", o), e.event.bind(h, "MSPointerMove", a), e.event.bind(h, "MSPointerUp", c)))
              }
          }
      }, H = function (r, l) {
          var n = this;
          if (void 0 === l && (l = {}), "string" == typeof r && (r = document.querySelector(r)), !r || !r.nodeName) throw new Error("no element is specified to initialize PerfectScrollbar");
          this.element = r, r.classList.add(m.main), this.settings = {
              handlers: ["click-rail", "drag-thumb", "keyboard", "wheel", "touch"],
              maxScrollbarLength: null,
              minScrollbarLength: null,
              scrollingThreshold: 1e3,
              scrollXMarginOffset: 0,
              scrollYMarginOffset: 0,
              suppressScrollX: !1,
              suppressScrollY: !1,
              swipeEasing: !0,
              useBothWheelAxes: !1,
              wheelPropagation: !0,
              wheelSpeed: 1
          };
          for (var o in l) n.settings[o] = l[o];
          this.containerWidth = null, this.containerHeight = null, this.contentWidth = null, this.contentHeight = null;
          var s = function () {
              return r.classList.add(m.state.focus)
          }, a = function () {
              return r.classList.remove(m.state.focus)
          };
          this.isRtl = "rtl" === t(r).direction, this.isNegativeScroll = function () {
              var t = r.scrollLeft, e = null;
              return r.scrollLeft = -1, e = r.scrollLeft < 0, r.scrollLeft = t, e
          }(), this.negativeScrollAdjustment = this.isNegativeScroll ? r.scrollWidth - r.clientWidth : 0, this.event = new y, this.ownerDocument = r.ownerDocument || document, this.scrollbarXRail = i(m.element.rail("x")), r.appendChild(this.scrollbarXRail), this.scrollbarX = i(m.element.thumb("x")), this.scrollbarXRail.appendChild(this.scrollbarX), this.scrollbarX.setAttribute("tabindex", 0), this.event.bind(this.scrollbarX, "focus", s), this.event.bind(this.scrollbarX, "blur", a), this.scrollbarXActive = null, this.scrollbarXWidth = null, this.scrollbarXLeft = null;
          var c = t(this.scrollbarXRail);
          this.scrollbarXBottom = parseInt(c.bottom, 10), isNaN(this.scrollbarXBottom) ? (this.isScrollbarXUsingBottom = !1, this.scrollbarXTop = u(c.top)) : this.isScrollbarXUsingBottom = !0, this.railBorderXWidth = u(c.borderLeftWidth) + u(c.borderRightWidth), e(this.scrollbarXRail, {display: "block"}), this.railXMarginWidth = u(c.marginLeft) + u(c.marginRight), e(this.scrollbarXRail, {display: ""}), this.railXWidth = null, this.railXRatio = null, this.scrollbarYRail = i(m.element.rail("y")), r.appendChild(this.scrollbarYRail), this.scrollbarY = i(m.element.thumb("y")), this.scrollbarYRail.appendChild(this.scrollbarY), this.scrollbarY.setAttribute("tabindex", 0), this.event.bind(this.scrollbarY, "focus", s), this.event.bind(this.scrollbarY, "blur", a), this.scrollbarYActive = null, this.scrollbarYHeight = null, this.scrollbarYTop = null;
          var h = t(this.scrollbarYRail);
          this.scrollbarYRight = parseInt(h.right, 10), isNaN(this.scrollbarYRight) ? (this.isScrollbarYUsingRight = !1, this.scrollbarYLeft = u(h.left)) : this.isScrollbarYUsingRight = !0, this.scrollbarYOuterWidth = this.isRtl ? f(this.scrollbarY) : null, this.railBorderYWidth = u(h.borderTopWidth) + u(h.borderBottomWidth), e(this.scrollbarYRail, {display: "block"}), this.railYMarginHeight = u(h.marginTop) + u(h.marginBottom), e(this.scrollbarYRail, {display: ""}), this.railYHeight = null, this.railYRatio = null, this.reach = {
              x: r.scrollLeft <= 0 ? "start" : r.scrollLeft >= this.contentWidth - this.containerWidth ? "end" : null,
              y: r.scrollTop <= 0 ? "start" : r.scrollTop >= this.contentHeight - this.containerHeight ? "end" : null
          }, this.isAlive = !0, this.settings.handlers.forEach(function (t) {
              return T[t](n)
          }), this.lastScrollTop = Math.floor(r.scrollTop), this.lastScrollLeft = r.scrollLeft, this.event.bind(this.element, "scroll", function (t) {
              return n.onScroll(t)
          }), R(this)
      };
      return H.prototype.update = function () {
          this.isAlive && (this.negativeScrollAdjustment = this.isNegativeScroll ? this.element.scrollWidth - this.element.clientWidth : 0, e(this.scrollbarXRail, {display: "block"}), e(this.scrollbarYRail, {display: "block"}), this.railXMarginWidth = u(t(this.scrollbarXRail).marginLeft) + u(t(this.scrollbarXRail).marginRight), this.railYMarginHeight = u(t(this.scrollbarYRail).marginTop) + u(t(this.scrollbarYRail).marginBottom), e(this.scrollbarXRail, {display: "none"}), e(this.scrollbarYRail, {display: "none"}), R(this), W(this, "top", 0, !1, !0), W(this, "left", 0, !1, !0), e(this.scrollbarXRail, {display: ""}), e(this.scrollbarYRail, {display: ""}))
      }, H.prototype.onScroll = function (t) {
          this.isAlive && (R(this), W(this, "top", this.element.scrollTop - this.lastScrollTop), W(this, "left", this.element.scrollLeft - this.lastScrollLeft), this.lastScrollTop = Math.floor(this.element.scrollTop), this.lastScrollLeft = this.element.scrollLeft)
      }, H.prototype.destroy = function () {
          this.isAlive && (this.event.unbindAll(), l(this.scrollbarX), l(this.scrollbarY), l(this.scrollbarXRail), l(this.scrollbarYRail), this.removePsClasses(), this.element = null, this.scrollbarX = null, this.scrollbarY = null, this.scrollbarXRail = null, this.scrollbarYRail = null, this.isAlive = !1)
      }, H.prototype.removePsClasses = function () {
          this.element.className = this.element.className.split(" ").filter(function (t) {
              return !t.match(/^ps([-_].+|)$/)
          }).join(" ")
      }, H
  });