text: /*!
   * imagesLoaded PACKAGED v4.1.4
   * JavaScript is all like "You images are done yet or what?"
   * MIT License
   */
  
  ! function(e, t) {
      "function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", t) : "object" == typeof module && module.exports ? module.exports = t() : e.EvEmitter = t()
  }("undefined" != typeof window ? window : this, function() {
      function e() {}
      var t = e.prototype;
      return t.on = function(e, t) {
          if (e && t) {
              var i = this._events = this._events || {},
                  n = i[e] = i[e] || [];
              return n.indexOf(t) == -1 && n.push(t), this
          }
      }, t.once = function(e, t) {
          if (e && t) {
              this.on(e, t);
              var i = this._onceEvents = this._onceEvents || {},
                  n = i[e] = i[e] || {};
              return n[t] = !0, this
          }
      }, t.off = function(e, t) {
          var i = this._events && this._events[e];
          if (i && i.length) {
              var n = i.indexOf(t);
              return n != -1 && i.splice(n, 1), this
          }
      }, t.emitEvent = function(e, t) {
          var i = this._events && this._events[e];
          if (i && i.length) {
              i = i.slice(0), t = t || [];
              for (var n = this._onceEvents && this._onceEvents[e], o = 0; o < i.length; o++) {
                  var r = i[o],
                      s = n && n[r];
                  s && (this.off(e, r), delete n[r]), r.apply(this, t)
              }
              return this
          }
      }, t.allOff = function() {
          delete this._events, delete this._onceEvents
      }, e
  }),
      function(e, t) {
          "use strict";
          "function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter"], function(i) {
              return t(e, i)
          }) : "object" == typeof module && module.exports ? module.exports = t(e, require("ev-emitter")) : e.imagesLoaded = t(e, e.EvEmitter)
      }("undefined" != typeof window ? window : this, function(e, t) {
          function i(e, t) {
              for (var i in t) e[i] = t[i];
              return e
          }
  
          function n(e) {
              if (Array.isArray(e)) return e;
              var t = "object" == typeof e && "number" == typeof e.length;
              return t ? d.call(e) : [e]
          }
  
          function o(e, t, r) {
              if (!(this instanceof o)) return new o(e, t, r);
              var s = e;
              return "string" == typeof e && (s = document.querySelectorAll(e)), s ? (this.elements = n(s), this.options = i({}, this.options), "function" == typeof t ? r = t : i(this.options, t), r && this.on("always", r), this.getImages(), h && (this.jqDeferred = new h.Deferred), void setTimeout(this.check.bind(this))) : void a.error("Bad element for imagesLoaded " + (s || e))
          }
  
          function r(e) {
              this.img = e
          }
  
          function s(e, t) {
              this.url = e, this.element = t, this.img = new Image
          }
          var h = e.jQuery,
              a = e.console,
              d = Array.prototype.slice;
          o.prototype = Object.create(t.prototype), o.prototype.options = {}, o.prototype.getImages = function() {
              this.images = [], this.elements.forEach(this.addElementImages, this)
          }, o.prototype.addElementImages = function(e) {
              "IMG" == e.nodeName && this.addImage(e), this.options.background === !0 && this.addElementBackgroundImages(e);
              var t = e.nodeType;
              if (t && u[t]) {
                  for (var i = e.querySelectorAll("img"), n = 0; n < i.length; n++) {
                      var o = i[n];
                      this.addImage(o)
                  }
                  if ("string" == typeof this.options.background) {
                      var r = e.querySelectorAll(this.options.background);
                      for (n = 0; n < r.length; n++) {
                          var s = r[n];
                          this.addElementBackgroundImages(s)
                      }
                  }
              }
          };
          var u = {
              1: !0,
              9: !0,
              11: !0
          };
          return o.prototype.addElementBackgroundImages = function(e) {
              var t = getComputedStyle(e);
              if (t)
                  for (var i = /url\((['"])?(.*?)\1\)/gi, n = i.exec(t.backgroundImage); null !== n;) {
                      var o = n && n[2];
                      o && this.addBackground(o, e), n = i.exec(t.backgroundImage)
                  }
          }, o.prototype.addImage = function(e) {
              var t = new r(e);
              this.images.push(t)
          }, o.prototype.addBackground = function(e, t) {
              var i = new s(e, t);
              this.images.push(i)
          }, o.prototype.check = function() {
              function e(e, i, n) {
                  setTimeout(function() {
                      t.progress(e, i, n)
                  })
              }
              var t = this;
              return this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? void this.images.forEach(function(t) {
                  t.once("progress", e), t.check()
              }) : void this.complete()
          }, o.prototype.progress = function(e, t, i) {
              this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !e.isLoaded, this.emitEvent("progress", [this, e, t]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, e), this.progressedCount == this.images.length && this.complete(), this.options.debug && a && a.log("progress: " + i, e, t)
          }, o.prototype.complete = function() {
              var e = this.hasAnyBroken ? "fail" : "done";
              if (this.isComplete = !0, this.emitEvent(e, [this]), this.emitEvent("always", [this]), this.jqDeferred) {
                  var t = this.hasAnyBroken ? "reject" : "resolve";
                  this.jqDeferred[t](this)
              }
          }, r.prototype = Object.create(t.prototype), r.prototype.check = function() {
              var e = this.getIsImageComplete();
              return e ? void this.confirm(0 !== this.img.naturalWidth, "naturalWidth") : (this.proxyImage = new Image, this.proxyImage.addEventListener("load", this), this.proxyImage.addEventListener("error", this), this.img.addEventListener("load", this), this.img.addEventListener("error", this), void(this.proxyImage.src = this.img.src))
          }, r.prototype.getIsImageComplete = function() {
              return this.img.complete && this.img.naturalWidth
          }, r.prototype.confirm = function(e, t) {
              this.isLoaded = e, this.emitEvent("progress", [this, this.img, t])
          }, r.prototype.handleEvent = function(e) {
              var t = "on" + e.type;
              this[t] && this[t](e)
          }, r.prototype.onload = function() {
              this.confirm(!0, "onload"), this.unbindEvents()
          }, r.prototype.onerror = function() {
              this.confirm(!1, "onerror"), this.unbindEvents()
          }, r.prototype.unbindEvents = function() {
              this.proxyImage.removeEventListener("load", this), this.proxyImage.removeEventListener("error", this), this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)
          }, s.prototype = Object.create(r.prototype), s.prototype.check = function() {
              this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.img.src = this.url;
              var e = this.getIsImageComplete();
              e && (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), this.unbindEvents())
          }, s.prototype.unbindEvents = function() {
              this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)
          }, s.prototype.confirm = function(e, t) {
              this.isLoaded = e, this.emitEvent("progress", [this, this.element, t])
          }, o.makeJQueryPlugin = function(t) {
              t = t || e.jQuery, t && (h = t, h.fn.imagesLoaded = function(e, t) {
                  var i = new o(this, e, t);
                  return i.jqDeferred.promise(h(this))
              })
          }, o.makeJQueryPlugin(), o
      });