PageSourceSearch

https://hkac.org.hk/en/lib/js/isotope.pkgd.min.js?lang=1&?cache=20261001201040

js hkac.org.hk collected 2026-10-01 12:15:53 UTC 48,831 bytes, 1,028 lines download raw bytes

vendor: 13,387 bytes, lines 1-304
1/*!
2 * Isotope PACKAGED v3.0.1
3 *
4 * Licensed GPLv3 for open source use
5 * or Isotope Commercial License for commercial use
6 *
7 * http://isotope.metafizzy.co
8 * Copyright 2016 Metafizzy
9 */
10
11!function (t, e) {
12    "use strict";
13    "function" == typeof define && define.amd ? define("jquery-bridget/jquery-bridget", ["jquery"], function (i) {
14        e(t, i)
15    }) : "object" == typeof module && module.exports ? module.exports = e(t, require("jquery")) : t.jQueryBridget = e(t, t.jQuery)
16}(window, function (t, e) {
17    "use strict";
18    function i(i, s, a) {
19        function u(t, e, n) {
20            var o, s = "$()." + i + '("' + e + '")';
21            return t.each(function (t, u) {
22                var h = a.data(u, i);
23                if (!h)return void r(i + " not initialized. Cannot call methods, i.e. " + s);
24                var d = h[e];
25                if (!d || "_" == e.charAt(0))return void r(s + " is not a valid method");
26                var l = d.apply(h, n);
27                o = void 0 === o ? l : o
28            }), void 0 !== o ? o : t
29        }
30
31        function h(t, e) {
32            t.each(function (t, n) {
33                var o = a.data(n, i);
34                o ? (o.option(e), o._init()) : (o = new s(n, e), a.data(n, i, o))
35            })
36        }
37
38        a = a || e || t.jQuery, a && (s.prototype.option || (s.prototype.option = function (t) {
39            a.isPlainObject(t) && (this.options = a.extend(!0, this.options, t))
40        }), a.fn[i] = function (t) {
41            if ("string" == typeof t) {
42                var e = o.call(arguments, 1);
43                return u(this, t, e)
44            }
45            return h(this, t), this
46        }, n(a))
47    }
48
49    function n(t) {
50        !t || t && t.bridget || (t.bridget = i)
51    }
52
53    var o = Array.prototype.slice, s = t.console, r = "undefined" == typeof s ? function () {
54    } : function (t) {
55        s.error(t)
56    };
57    return n(e || t.jQuery), i
58}), function (t, e) {
59    "function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", e) : "object" == typeof module && module.exports ? module.exports = e() : t.EvEmitter = e()
60}("undefined" != typeof window ? window : this, function () {
61    function t() {
62    }
63
64    var e = t.prototype;
65    return e.on = function (t, e) {
66        if (t && e) {
67            var i = this._events = this._events || {}, n = i[t] = i[t] || [];
68            return -1 == n.indexOf(e) && n.push(e), this
69        }
70    }, e.once = function (t, e) {
71        if (t && e) {
72            this.on(t, e);
73            var i = this._onceEvents = this._onceEvents || {}, n = i[t] = i[t] || {};
74            return n[e] = !0, this
75        }
76    }, e.off = function (t, e) {
77        var i = this._events && this._events[t];
78        if (i && i.length) {
79            var n = i.indexOf(e);
80            return -1 != n && i.splice(n, 1), this
81        }
82    }, e.emitEvent = function (t, e) {
83        var i = this._events && this._events[t];
84        if (i && i.length) {
85            var n = 0, o = i[n];
86            e = e || [];
87            for (var s = this._onceEvents && this._onceEvents[t]; o;) {
88                var r = s && s[o];
89                r && (this.off(t, o), delete s[o]), o.apply(this, e), n += r ? 0 : 1, o = i[n]
90            }
91            return this
92        }
93    }, t
94}), function (t, e) {
95    "use strict";
96    "function" == typeof define && define.amd ? define("get-size/get-size", [], function () {
97        return e()
98    }) : "object" == typeof module && module.exports ? module.exports = e() : t.getSize = e()
99}(window, function () {
100    "use strict";
101    function t(t) {
102        var e = parseFloat(t), i = -1 == t.indexOf("%") && !isNaN(e);
103        return i && e
104    }
105
106    function e() {
107    }
108
109    function i() {
110        for (var t = {
111            width: 0,
112            height: 0,
113            innerWidth: 0,
114            innerHeight: 0,
115            outerWidth: 0,
116            outerHeight: 0
117        }, e = 0; h > e; e++) {
118            var i = u[e];
119            t[i] = 0
120        }
121        return t
122    }
123
124    function n(t) {
125        var e = getComputedStyle(t);
126        return e || a("Style returned " + e + ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), e
127    }
128
129    function o() {
130        if (!d) {
131            d = !0;
132            var e = document.createElement("div");
133            e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth = "1px 2px 3px 4px", e.style.boxSizing = "border-box";
134            var i = document.body || document.documentElement;
135            i.appendChild(e);
136            var o = n(e);
137            s.isBoxSizeOuter = r = 200 == t(o.width), i.removeChild(e)
138        }
139    }
140
141    function s(e) {
142        if (o(), "string" == typeof e && (e = document.querySelector(e)), e && "object" == typeof e && e.nodeType) {
143            var s = n(e);
144            if ("none" == s.display)return i();
145            var a = {};
146            a.width = e.offsetWidth, a.height = e.offsetHeight;
147            for (var d = a.isBorderBox = "border-box" == s.boxSizing, l = 0; h > l; l++) {
148                var f = u[l], c = s[f], m = parseFloat(c);
149                a[f] = isNaN(m) ? 0 : m
150            }
151            var p = a.paddingLeft + a.paddingRight, y = a.paddingTop + a.paddingBottom, g = a.marginLeft + a.marginRight, v = a.marginTop + a.marginBottom, _ = a.borderLeftWidth + a.borderRightWidth, I = a.borderTopWidth + a.borderBottomWidth, z = d && r, x = t(s.width);
152            x !== !1 && (a.width = x + (z ? 0 : p + _));
153            var S = t(s.height);
154            return S !== !1 && (a.height = S + (z ? 0 : y + I)), a.innerWidth = a.width - (p + _), a.innerHeight = a.height - (y + I), a.outerWidth = a.width + g, a.outerHeight = a.height + v, a
155        }
156    }
157
158    var r, a = "undefined" == typeof console ? e : function (t) {
159        console.error(t)
160    }, u = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"], h = u.length, d = !1;
161    return s
162}), function (t, e) {
163    "use strict";
164    "function" == typeof define && define.amd ? define("desandro-matches-selector/matches-selector", e) : "object" == typeof module && module.exports ? module.exports = e() : t.matchesSelector = e()
165}(window, function () {
166    "use strict";
167    var t = function () {
168        var t = Element.prototype;
169        if (t.matches)return "matches";
170        if (t.matchesSelector)return "matchesSelector";
171        for (var e = ["webkit", "moz", "ms", "o"], i = 0; i < e.length; i++) {
172            var n = e[i], o = n + "MatchesSelector";
173            if (t[o])return o
174        }
175    }();
176    return function (e, i) {
177        return e[t](i)
178    }
179}), function (t, e) {
180    "function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["desandro-matches-selector/matches-selector"], function (i) {
181        return e(t, i)
182    }) : "object" == typeof module && module.exports ? module.exports = e(t, require("desandro-matches-selector")) : t.fizzyUIUtils = e(t, t.matchesSelector)
183}(window, function (t, e) {
184    var i = {};
185    i.extend = function (t, e) {
186        for (var i in e)t[i] = e[i];
187        return t
188    }, i.modulo = function (t, e) {
189        return (t % e + e) % e
190    }, i.makeArray = function (t) {
191        var e = [];
192        if (Array.isArray(t))e = t; else if (t && "number" == typeof t.length)for (var i = 0; i < t.length; i++)e.push(t[i]); else e.push(t);
193        return e
194    }, i.removeFrom = function (t, e) {
195        var i = t.indexOf(e);
196        -1 != i && t.splice(i, 1)
197    }, i.getParent = function (t, i) {
198        for (; t != document.body;)if (t = t.parentNode, e(t, i))return t
199    }, i.getQueryElement = function (t) {
200        return "string" == typeof t ? document.querySelector(t) : t
201    }, i.handleEvent = function (t) {
202        var e = "on" + t.type;
203        this[e] && this[e](t)
204    }, i.filterFindElements = function (t, n) {
205        t = i.makeArray(t);
206        var o = [];
207        return t.forEach(function (t) {
208            if (t instanceof HTMLElement) {
209                if (!n)return void o.push(t);
210                e(t, n) && o.push(t);
211                for (var i = t.querySelectorAll(n), s = 0; s < i.length; s++)o.push(i[s])
212            }
213        }), o
214    }, i.debounceMethod = function (t, e, i) {
215        var n = t.prototype[e], o = e + "Timeout";
216        t.prototype[e] = function () {
217            var t = this[o];
218            t && clearTimeout(t);
219            var e = arguments, s = this;
220            this[o] = setTimeout(function () {
221                n.apply(s, e), delete s[o]
222            }, i || 100)
223        }
224    }, i.docReady = function (t) {
225        var e = document.readyState;
226        "complete" == e || "interactive" == e ? t() : document.addEventListener("DOMContentLoaded", t)
227    }, i.toDashed = function (t) {
228        return t.replace(/(.)([A-Z])/g, function (t, e, i) {
229            return e + "-" + i
230        }).toLowerCase()
231    };
232    var n = t.console;
233    return i.htmlInit = function (e, o) {
234        i.docReady(function () {
235            var s = i.toDashed(o), r = "data-" + s, a = document.querySelectorAll("[" + r + "]"), u = document.querySelectorAll(".js-" + s), h = i.makeArray(a).concat(i.makeArray(u)), d = r + "-options", l = t.jQuery;
236            h.forEach(function (t) {
237                var i, s = t.getAttribute(r) || t.getAttribute(d);
238                try {
239                    i = s && JSON.parse(s)
240                } catch (a) {
241                    return void(n && n.error("Error parsing " + r + " on " + t.className + ": " + a))
242                }
243                var u = new e(t, i);
244                l && l.data(t, o, u)
245            })
246        })
247    }, i
248}), function (t, e) {
249    "function" == typeof define && define.amd ? define("outlayer/item", ["ev-emitter/ev-emitter", "get-size/get-size"], e) : "object" == typeof module && module.exports ? module.exports = e(require("ev-emitter"), require("get-size")) : (t.Outlayer = {}, t.Outlayer.Item = e(t.EvEmitter, t.getSize))
250}(window, function (t, e) {
251    "use strict";
252    function i(t) {
253        for (var e in t)return !1;
254        return e = null, !0
255    }
256
257    function n(t, e) {
258        t && (this.element = t, this.layout = e, this.position = {x: 0, y: 0}, this._create())
259    }
260
261    function o(t) {
262        return t.replace(/([A-Z])/g, function (t) {
263            return "-" + t.toLowerCase()
264        })
265    }
266
267    var s = document.documentElement.style, r = "string" == typeof s.transition ? "transition" : "WebkitTransition", a = "string" == typeof s.transform ? "transform" : "WebkitTransform", u = {
268        WebkitTransition: "webkitTransitionEnd",
269        transition: "transitionend"
270    }[r], h = {
271        transform: a,
272        transition: r,
273        transitionDuration: r + "Duration",
274        transitionProperty: r + "Property",
275        transitionDelay: r + "Delay"
276    }, d = n.prototype = Object.create(t.prototype);
277    d.constructor = n, d._create = function () {
278        this._transn = {ingProperties: {}, clean: {}, onEnd: {}}, this.css({position: "absolute"})
279    }, d.handleEvent = function (t) {
280        var e = "on" + t.type;
281        this[e] && this[e](t)
282    }, d.getSize = function () {
283        this.size = e(this.element)
284    }, d.css = function (t) {
285        var e = this.element.style;
286        for (var i in t) {
287            var n = h[i] || i;
288            e[n] = t[i]
289        }
290    }, d.getPosition = function () {
291        var t = getComputedStyle(this.element), e = this.layout._getOption("originLeft"), i = this.layout._getOption("originTop"), n = t[e ? "left" : "right"], o = t[i ? "top" : "bottom"], s = this.layout.size, r = -1 != n.indexOf("%") ? parseFloat(n) / 100 * s.width : parseInt(n, 10), a = -1 != o.indexOf("%") ? parseFloat(o) / 100 * s.height : parseInt(o, 10);
292        r = isNaN(r) ? 0 : r, a = isNaN(a) ? 0 : a, r -= e ? s.paddingLeft : s.paddingRight, a -= i ? s.paddingTop : s.paddingBottom, this.position.x = r, this.position.y = a
293    }, d.layoutPosition = function () {
294        var t = this.layout.size, e = {}, i = this.layout._getOption("originLeft"), n = this.layout._getOption("originTop"), o = i ? "paddingLeft" : "paddingRight", s = i ? "left" : "right", r = i ? "right" : "left", a = this.position.x + t[o];
295        e[s] = this.getXValue(a), e[r] = "";
296        var u = n ? "paddingTop" : "paddingBottom", h = n ? "top" : "bottom", d = n ? "bottom" : "top", l = this.position.y + t[u];
297        e[h] = this.getYValue(l), e[d] = "", this.css(e), this.emitEvent("layout", [this])
298    }, d.getXValue = function (t) {
299        var e = this.layout._getOption("horizontal");
300        return this.layout.options.percentPosition && !e ? t / this.layout.size.width * 100 + "%" : t + "px"
301    }, d.getYValue = function (t) {
302        var e = this.layout._getOption("horizontal");
303        return this.layout.options.percentPosition && e ? t / this.layout.size.height * 100 + "%" : t + "px"
304    }
vendor: 16,186 bytes, lines 304-651
304, d._transitionTo = function (t, e) {
305        this.getPosition();
306        var i = this.position.x, n = this.position.y, o = parseInt(t, 10), s = parseInt(e, 10), r = o === this.position.x && s === this.position.y;
307        if (this.setPosition(t, e), r && !this.isTransitioning)return void this.layoutPosition();
308        var a = t - i, u = e - n, h = {};
309        h.transform = this.getTranslate(a, u), this.transition({
310            to: h,
311            onTransitionEnd: {transform: this.layoutPosition},
312            isCleaning: !0
313        })
314    }, d.getTranslate = function (t, e) {
315        var i = this.layout._getOption("originLeft"), n = this.layout._getOption("originTop");
316        return t = i ? t : -t, e = n ? e : -e, "translate3d(" + t + "px, " + e + "px, 0)"
317    }, d.goTo = function (t, e) {
318        this.setPosition(t, e), this.layoutPosition()
319    }, d.moveTo = d._transitionTo, d.setPosition = function (t, e) {
320        this.position.x = parseInt(t, 10), this.position.y = parseInt(e, 10)
321    }, d._nonTransition = function (t) {
322        this.css(t.to), t.isCleaning && this._removeStyles(t.to);
323        for (var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)
324    }, d.transition = function (t) {
325        if (!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);
326        var e = this._transn;
327        for (var i in t.onTransitionEnd)e.onEnd[i] = t.onTransitionEnd[i];
328        for (i in t.to)e.ingProperties[i] = !0, t.isCleaning && (e.clean[i] = !0);
329        if (t.from) {
330            this.css(t.from);
331            var n = this.element.offsetHeight;
332            n = null
333        }
334        this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0
335    };
336    var l = "opacity," + o(a);
337    d.enableTransition = function () {
338        if (!this.isTransitioning) {
339            var t = this.layout.options.transitionDuration;
340            t = "number" == typeof t ? t + "ms" : t, this.css({
341                transitionProperty: l,
342                transitionDuration: t,
343                transitionDelay: this.staggerDelay || 0
344            }), this.element.addEventListener(u, this, !1)
345        }
346    }, d.onwebkitTransitionEnd = function (t) {
347        this.ontransitionend(t)
348    }, d.onotransitionend = function (t) {
349        this.ontransitionend(t)
350    };
351    var f = {"-webkit-transform": "transform"};
352    d.ontransitionend = function (t) {
353        if (t.target === this.element) {
354            var e = this._transn, n = f[t.propertyName] || t.propertyName;
355            if (delete e.ingProperties[n], i(e.ingProperties) && this.disableTransition(), n in e.clean && (this.element.style[t.propertyName] = "", delete e.clean[n]), n in e.onEnd) {
356                var o = e.onEnd[n];
357                o.call(this), delete e.onEnd[n]
358            }
359            this.emitEvent("transitionEnd", [this])
360        }
361    }, d.disableTransition = function () {
362        this.removeTransitionStyles(), this.element.removeEventListener(u, this, !1), this.isTransitioning = !1
363    }, d._removeStyles = function (t) {
364        var e = {};
365        for (var i in t)e[i] = "";
366        this.css(e)
367    };
368    var c = {transitionProperty: "", transitionDuration: "", transitionDelay: ""};
369    return d.removeTransitionStyles = function () {
370        this.css(c)
371    }, d.stagger = function (t) {
372        t = isNaN(t) ? 0 : t, this.staggerDelay = t + "ms"
373    }, d.removeElem = function () {
374        this.element.parentNode.removeChild(this.element), this.css({display: ""}), this.emitEvent("remove", [this])
375    }, d.remove = function () {
376        return r && parseFloat(this.layout.options.transitionDuration) ? (this.once("transitionEnd", function () {
377            this.removeElem()
378        }), void this.hide()) : void this.removeElem()
379    }, d.reveal = function () {
380        delete this.isHidden, this.css({display: ""});
381        var t = this.layout.options, e = {}, i = this.getHideRevealTransitionEndProperty("visibleStyle");
382        e[i] = this.onRevealTransitionEnd, this.transition({
383            from: t.hiddenStyle,
384            to: t.visibleStyle,
385            isCleaning: !0,
386            onTransitionEnd: e
387        })
388    }, d.onRevealTransitionEnd = function () {
389        this.isHidden || this.emitEvent("reveal")
390    }, d.getHideRevealTransitionEndProperty = function (t) {
391        var e = this.layout.options[t];
392        if (e.opacity)return "opacity";
393        for (var i in e)return i
394    }, d.hide = function () {
395        this.isHidden = !0, this.css({display: ""});
396        var t = this.layout.options, e = {}, i = this.getHideRevealTransitionEndProperty("hiddenStyle");
397        e[i] = this.onHideTransitionEnd, this.transition({
398            from: t.visibleStyle,
399            to: t.hiddenStyle,
400            isCleaning: !0,
401            onTransitionEnd: e
402        })
403    }, d.onHideTransitionEnd = function () {
404        this.isHidden && (this.css({display: "none"}), this.emitEvent("hide"))
405    }, d.destroy = function () {
406        this.css({position: "", left: "", right: "", top: "", bottom: "", transition: "", transform: ""})
407    }, n
408}), function (t, e) {
409    "use strict";
410    "function" == typeof define && define.amd ? define("outlayer/outlayer", ["ev-emitter/ev-emitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function (i, n, o, s) {
411        return e(t, i, n, o, s)
412    }) : "object" == typeof module && module.exports ? module.exports = e(t, require("ev-emitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : t.Outlayer = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, t.Outlayer.Item)
413}(window, function (t, e, i, n, o) {
414    "use strict";
415    function s(t, e) {
416        var i = n.getQueryElement(t);
417        if (!i)return void(u && u.error("Bad element for " + this.constructor.namespace + ": " + (i || t)));
418        this.element = i, h && (this.$element = h(this.element)), this.options = n.extend({}, this.constructor.defaults), this.option(e);
419        var o = ++l;
420        this.element.outlayerGUID = o, f[o] = this, this._create();
421        var s = this._getOption("initLayout");
422        s && this.layout()
423    }
424
425    function r(t) {
426        function e() {
427            t.apply(this, arguments)
428        }
429
430        return e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e
431    }
432
433    function a(t) {
434        if ("number" == typeof t)return t;
435        var e = t.match(/(^\d*\.?\d*)(\w*)/), i = e && e[1], n = e && e[2];
436        if (!i.length)return 0;
437        i = parseFloat(i);
438        var o = m[n] || 1;
439        return i * o
440    }
441
442    var u = t.console, h = t.jQuery, d = function () {
443    }, l = 0, f = {};
444    s.namespace = "outlayer", s.Item = o, s.defaults = {
445        containerStyle: {position: "relative"},
446        initLayout: !0,
447        originLeft: !0,
448        originTop: !0,
449        resize: !0,
450        resizeContainer: !0,
451        transitionDuration: "0.4s",
452        hiddenStyle: {opacity: 0, transform: "scale(0.001)"},
453        visibleStyle: {opacity: 1, transform: "scale(1)"}
454    };
455    var c = s.prototype;
456    n.extend(c, e.prototype), c.option = function (t) {
457        n.extend(this.options, t)
458    }, c._getOption = function (t) {
459        var e = this.constructor.compatOptions[t];
460        return e && void 0 !== this.options[e] ? this.options[e] : this.options[t]
461    }, s.compatOptions = {
462        initLayout: "isInitLayout",
463        horizontal: "isHorizontal",
464        layoutInstant: "isLayoutInstant",
465        originLeft: "isOriginLeft",
466        originTop: "isOriginTop",
467        resize: "isResizeBound",
468        resizeContainer: "isResizingContainer"
469    }, c._create = function () {
470        this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), n.extend(this.element.style, this.options.containerStyle);
471        var t = this._getOption("resize");
472        t && this.bindResize()
473    }, c.reloadItems = function () {
474        this.items = this._itemize(this.element.children)
475    }, c._itemize = function (t) {
476        for (var e = this._filterFindItemElements(t), i = this.constructor.Item, n = [], o = 0; o < e.length; o++) {
477            var s = e[o], r = new i(s, this);
478            n.push(r)
479        }
480        return n
481    }, c._filterFindItemElements = function (t) {
482        return n.filterFindElements(t, this.options.itemSelector)
483    }, c.getItemElements = function () {
484        return this.items.map(function (t) {
485            return t.element
486        })
487    }, c.layout = function () {
488        this._resetLayout(), this._manageStamps();
489        var t = this._getOption("layoutInstant"), e = void 0 !== t ? t : !this._isLayoutInited;
490        this.layoutItems(this.items, e), this._isLayoutInited = !0
491    }, c._init = c.layout, c._resetLayout = function () {
492        this.getSize()
493    }, c.getSize = function () {
494        this.size = i(this.element)
495    }, c._getMeasurement = function (t, e) {
496        var n, o = this.options[t];
497        o ? ("string" == typeof o ? n = this.element.querySelector(o) : o instanceof HTMLElement && (n = o), this[t] = n ? i(n)[e] : o) : this[t] = 0
498    }, c.layoutItems = function (t, e) {
499        t = this._getItemsForLayout(t), this._layoutItems(t, e), this._postLayout()
500    }, c._getItemsForLayout = function (t) {
501        return t.filter(function (t) {
502            return !t.isIgnored
503        })
504    }, c._layoutItems = function (t, e) {
505        if (this._emitCompleteOnItems("layout", t), t && t.length) {
506            var i = [];
507            t.forEach(function (t) {
508                var n = this._getItemLayoutPosition(t);
509                n.item = t, n.isInstant = e || t.isLayoutInstant, i.push(n)
510            }, this), this._processLayoutQueue(i)
511        }
512    }, c._getItemLayoutPosition = function () {
513        return {x: 0, y: 0}
514    }, c._processLayoutQueue = function (t) {
515        this.updateStagger(), t.forEach(function (t, e) {
516            this._positionItem(t.item, t.x, t.y, t.isInstant, e)
517        }, this)
518    }, c.updateStagger = function () {
519        var t = this.options.stagger;
520        return null === t || void 0 === t ? void(this.stagger = 0) : (this.stagger = a(t), this.stagger)
521    }, c._positionItem = function (t, e, i, n, o) {
522        n ? t.goTo(e, i) : (t.stagger(o * this.stagger), t.moveTo(e, i))
523    }, c._postLayout = function () {
524        this.resizeContainer()
525    }, c.resizeContainer = function () {
526        var t = this._getOption("resizeContainer");
527        if (t) {
528            var e = this._getContainerSize();
529            e && (this._setContainerMeasure(e.width, !0), this._setContainerMeasure(e.height, !1))
530        }
531    }, c._getContainerSize = d, c._setContainerMeasure = function (t, e) {
532        if (void 0 !== t) {
533            var i = this.size;
534            i.isBorderBox && (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth + i.borderRightWidth : i.paddingBottom + i.paddingTop + i.borderTopWidth + i.borderBottomWidth), t = Math.max(t, 0), this.element.style[e ? "width" : "height"] = t + "px"
535        }
536    }, c._emitCompleteOnItems = function (t, e) {
537        function i() {
538            o.dispatchEvent(t + "Complete", null, [e])
539        }
540
541        function n() {
542            r++, r == s && i()
543        }
544
545        var o = this, s = e.length;
546        if (!e || !s)return void i();
547        var r = 0;
548        e.forEach(function (e) {
549            e.once(t, n)
550        })
551    }, c.dispatchEvent = function (t, e, i) {
552        var n = e ? [e].concat(i) : i;
553        if (this.emitEvent(t, n), h)if (this.$element = this.$element || h(this.element), e) {
554            var o = h.Event(e);
555            o.type = t, this.$element.trigger(o, i)
556        } else this.$element.trigger(t, i)
557    }, c.ignore = function (t) {
558        var e = this.getItem(t);
559        e && (e.isIgnored = !0)
560    }, c.unignore = function (t) {
561        var e = this.getItem(t);
562        e && delete e.isIgnored
563    }, c.stamp = function (t) {
564        t = this._find(t), t && (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this))
565    }, c.unstamp = function (t) {
566        t = this._find(t), t && t.forEach(function (t) {
567            n.removeFrom(this.stamps, t), this.unignore(t)
568        }, this)
569    }, c._find = function (t) {
570        return t ? ("string" == typeof t && (t = this.element.querySelectorAll(t)), t = n.makeArray(t)) : void 0
571    }, c._manageStamps = function () {
572        this.stamps && this.stamps.length && (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this))
573    }, c._getBoundingRect = function () {
574        var t = this.element.getBoundingClientRect(), e = this.size;
575        this._boundingRect = {
576            left: t.left + e.paddingLeft + e.borderLeftWidth,
577            top: t.top + e.paddingTop + e.borderTopWidth,
578            right: t.right - (e.paddingRight + e.borderRightWidth),
579            bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth)
580        }
581    }, c._manageStamp = d, c._getElementOffset = function (t) {
582        var e = t.getBoundingClientRect(), n = this._boundingRect, o = i(t), s = {
583            left: e.left - n.left - o.marginLeft,
584            top: e.top - n.top - o.marginTop,
585            right: n.right - e.right - o.marginRight,
586            bottom: n.bottom - e.bottom - o.marginBottom
587        };
588        return s
589    }, c.handleEvent = n.handleEvent, c.bindResize = function () {
590        t.addEventListener("resize", this), this.isResizeBound = !0
591    }, c.unbindResize = function () {
592        t.removeEventListener("resize", this), this.isResizeBound = !1
593    }, c.onresize = function () {
594        this.resize()
595    }, n.debounceMethod(s, "onresize", 100), c.resize = function () {
596        this.isResizeBound && this.needsResizeLayout() && this.layout()
597    }, c.needsResizeLayout = function () {
598        var t = i(this.element), e = this.size && t;
599        return e && t.innerWidth !== this.size.innerWidth
600    }, c.addItems = function (t) {
601        var e = this._itemize(t);
602        return e.length && (this.items = this.items.concat(e)), e
603    }, c.appended = function (t) {
604        var e = this.addItems(t);
605        e.length && (this.layoutItems(e, !0), this.reveal(e))
606    }, c.prepended = function (t) {
607        var e = this._itemize(t);
608        if (e.length) {
609            var i = this.items.slice(0);
610            this.items = e.concat(i), this._resetLayout(), this._manageStamps(), this.layoutItems(e, !0), this.reveal(e), this.layoutItems(i)
611        }
612    }, c.reveal = function (t) {
613        if (this._emitCompleteOnItems("reveal", t), t && t.length) {
614            var e = this.updateStagger();
615            t.forEach(function (t, i) {
616                t.stagger(i * e), t.reveal()
617            })
618        }
619    }, c.hide = function (t) {
620        if (this._emitCompleteOnItems("hide", t), t && t.length) {
621            var e = this.updateStagger();
622            t.forEach(function (t, i) {
623                t.stagger(i * e), t.hide()
624            })
625        }
626    }, c.revealItemElements = function (t) {
627        var e = this.getItems(t);
628        this.reveal(e)
629    }, c.hideItemElements = function (t) {
630        var e = this.getItems(t);
631        this.hide(e)
632    }, c.getItem = function (t) {
633        for (var e = 0; e < this.items.length; e++) {
634            var i = this.items[e];
635            if (i.element == t)return i
636        }
637    }, c.getItems = function (t) {
638        t = n.makeArray(t);
639        var e = [];
640        return t.forEach(function (t) {
641            var i = this.getItem(t);
642            i && e.push(i)
643        }, this), e
644    }, c.remove = function (t) {
645        var e = this.getItems(t);
646        this._emitCompleteOnItems("remove", e), e && e.length && e.forEach(function (t) {
647            t.remove(), n.removeFrom(this.items, t)
648        }, this)
649    }, c.destroy = function () {
650        var t = this.element.style;
651        t.height = "", t.position = "", t.width = "", this.items.forEac
vendor: 19,258 bytes, lines 651-1028
651h(function (t) {
652            t.destroy()
653        }), this.unbindResize();
654        var e = this.element.outlayerGUID;
655        delete f[e], delete this.element.outlayerGUID, h && h.removeData(this.element, this.constructor.namespace)
656    }, s.data = function (t) {
657        t = n.getQueryElement(t);
658        var e = t && t.outlayerGUID;
659        return e && f[e]
660    }, s.create = function (t, e) {
661        var i = r(s);
662        return i.defaults = n.extend({}, s.defaults), n.extend(i.defaults, e), i.compatOptions = n.extend({}, s.compatOptions), i.namespace = t, i.data = s.data, i.Item = r(o), n.htmlInit(i, t), h && h.bridget && h.bridget(t, i), i
663    };
664    var m = {ms: 1, s: 1e3};
665    return s.Item = o, s
666}), function (t, e) {
667    "function" == typeof define && define.amd ? define("isotope/js/item", ["outlayer/outlayer"], e) : "object" == typeof module && module.exports ? module.exports = e(require("outlayer")) : (t.Isotope = t.Isotope || {}, t.Isotope.Item = e(t.Outlayer))
668}(window, function (t) {
669    "use strict";
670    function e() {
671        t.Item.apply(this, arguments)
672    }
673
674    var i = e.prototype = Object.create(t.Item.prototype), n = i._create;
675    i._create = function () {
676        this.id = this.layout.itemGUID++, n.call(this), this.sortData = {}
677    }, i.updateSortData = function () {
678        if (!this.isIgnored) {
679            this.sortData.id = this.id, this.sortData["original-order"] = this.id, this.sortData.random = Math.random();
680            var t = this.layout.options.getSortData, e = this.layout._sorters;
681            for (var i in t) {
682                var n = e[i];
683                this.sortData[i] = n(this.element, this)
684            }
685        }
686    };
687    var o = i.destroy;
688    return i.destroy = function () {
689        o.apply(this, arguments), this.css({display: ""})
690    }, e
691}), function (t, e) {
692    "function" == typeof define && define.amd ? define("isotope/js/layout-mode", ["get-size/get-size", "outlayer/outlayer"], e) : "object" == typeof module && module.exports ? module.exports = e(require("get-size"), require("outlayer")) : (t.Isotope = t.Isotope || {}, t.Isotope.LayoutMode = e(t.getSize, t.Outlayer))
693}(window, function (t, e) {
694    "use strict";
695    function i(t) {
696        this.isotope = t, t && (this.options = t.options[this.namespace], this.element = t.element, this.items = t.filteredItems, this.size = t.size)
697    }
698
699    var n = i.prototype, o = ["_resetLayout", "_getItemLayoutPosition", "_manageStamp", "_getContainerSize", "_getElementOffset", "needsResizeLayout", "_getOption"];
700    return o.forEach(function (t) {
701        n[t] = function () {
702            return e.prototype[t].apply(this.isotope, arguments)
703        }
704    }), n.needsVerticalResizeLayout = function () {
705        var e = t(this.isotope.element), i = this.isotope.size && e;
706        return i && e.innerHeight != this.isotope.size.innerHeight
707    }, n._getMeasurement = function () {
708        this.isotope._getMeasurement.apply(this, arguments)
709    }, n.getColumnWidth = function () {
710        this.getSegmentSize("column", "Width")
711    }, n.getRowHeight = function () {
712        this.getSegmentSize("row", "Height")
713    }, n.getSegmentSize = function (t, e) {
714        var i = t + e, n = "outer" + e;
715        if (this._getMeasurement(i, n), !this[i]) {
716            var o = this.getFirstItemSize();
717            this[i] = o && o[n] || this.isotope.size["inner" + e]
718        }
719    }, n.getFirstItemSize = function () {
720        var e = this.isotope.filteredItems[0];
721        return e && e.element && t(e.element)
722    }, n.layout = function () {
723        this.isotope.layout.apply(this.isotope, arguments)
724    }, n.getSize = function () {
725        this.isotope.getSize(), this.size = this.isotope.size
726    }, i.modes = {}, i.create = function (t, e) {
727        function o() {
728            i.apply(this, arguments)
729        }
730
731        return o.prototype = Object.create(n), o.prototype.constructor = o, e && (o.options = e), o.prototype.namespace = t, i.modes[t] = o, o
732    }, i
733}), function (t, e) {
734    "function" == typeof define && define.amd ? define("masonry/masonry", ["outlayer/outlayer", "get-size/get-size"], e) : "object" == typeof module && module.exports ? module.exports = e(require("outlayer"), require("get-size")) : t.Masonry = e(t.Outlayer, t.getSize)
735}(window, function (t, e) {
736    var i = t.create("masonry");
737    return i.compatOptions.fitWidth = "isFitWidth", i.prototype._resetLayout = function () {
738        this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns(), this.colYs = [];
739        for (var t = 0; t < this.cols; t++)this.colYs.push(0);
740        this.maxY = 0
741    }, i.prototype.measureColumns = function () {
742        if (this.getContainerWidth(), !this.columnWidth) {
743            var t = this.items[0], i = t && t.element;
744            this.columnWidth = i && e(i).outerWidth || this.containerWidth
745        }
746        var n = this.columnWidth += this.gutter, o = this.containerWidth + this.gutter, s = o / n, r = n - o % n, a = r && 1 > r ? "round" : "floor";
747        s = Math[a](s), this.cols = Math.max(s, 1)
748    }, i.prototype.getContainerWidth = function () {
749        var t = this._getOption("fitWidth"), i = t ? this.element.parentNode : this.element, n = e(i);
750        this.containerWidth = n && n.innerWidth
751    }, i.prototype._getItemLayoutPosition = function (t) {
752        t.getSize();
753        var e = t.size.outerWidth % this.columnWidth, i = e && 1 > e ? "round" : "ceil", n = Math[i](t.size.outerWidth / this.columnWidth);
754        n = Math.min(n, this.cols);
755        for (var o = this._getColGroup(n), s = Math.min.apply(Math, o), r = o.indexOf(s), a = {
756            x: this.columnWidth * r,
757            y: s
758        }, u = s + t.size.outerHeight, h = this.cols + 1 - o.length, d = 0; h > d; d++)this.colYs[r + d] = u;
759        return a
760    }, i.prototype._getColGroup = function (t) {
761        if (2 > t)return this.colYs;
762        for (var e = [], i = this.cols + 1 - t, n = 0; i > n; n++) {
763            var o = this.colYs.slice(n, n + t);
764            e[n] = Math.max.apply(Math, o)
765        }
766        return e
767    }, i.prototype._manageStamp = function (t) {
768        var i = e(t), n = this._getElementOffset(t), o = this._getOption("originLeft"), s = o ? n.left : n.right, r = s + i.outerWidth, a = Math.floor(s / this.columnWidth);
769        a = Math.max(0, a);
770        var u = Math.floor(r / this.columnWidth);
771        u -= r % this.columnWidth ? 0 : 1, u = Math.min(this.cols - 1, u);
772        for (var h = this._getOption("originTop"), d = (h ? n.top : n.bottom) + i.outerHeight, l = a; u >= l; l++)this.colYs[l] = Math.max(d, this.colYs[l])
773    }, i.prototype._getContainerSize = function () {
774        this.maxY = Math.max.apply(Math, this.colYs);
775        var t = {height: this.maxY};
776        return this._getOption("fitWidth") && (t.width = this._getContainerFitWidth()), t
777    }, i.prototype._getContainerFitWidth = function () {
778        for (var t = 0, e = this.cols; --e && 0 === this.colYs[e];)t++;
779        return (this.cols - t) * this.columnWidth - this.gutter
780    }, i.prototype.needsResizeLayout = function () {
781        var t = this.containerWidth;
782        return this.getContainerWidth(), t != this.containerWidth
783    }, i
784}), function (t, e) {
785    "function" == typeof define && define.amd ? define("isotope/js/layout-modes/masonry", ["../layout-mode", "masonry/masonry"], e) : "object" == typeof module && module.exports ? module.exports = e(require("../layout-mode"), require("masonry-layout")) : e(t.Isotope.LayoutMode, t.Masonry)
786}(window, function (t, e) {
787    "use strict";
788    var i = t.create("masonry"), n = i.prototype, o = {_getElementOffset: !0, layout: !0, _getMeasurement: !0};
789    for (var s in e.prototype)o[s] || (n[s] = e.prototype[s]);
790    var r = n.measureColumns;
791    n.measureColumns = function () {
792        this.items = this.isotope.filteredItems, r.call(this)
793    };
794    var a = n._getOption;
795    return n._getOption = function (t) {
796        return "fitWidth" == t ? void 0 !== this.options.isFitWidth ? this.options.isFitWidth : this.options.fitWidth : a.apply(this.isotope, arguments)
797    }, i
798}), function (t, e) {
799    "function" == typeof define && define.amd ? define("isotope/js/layout-modes/fit-rows", ["../layout-mode"], e) : "object" == typeof exports ? module.exports = e(require("../layout-mode")) : e(t.Isotope.LayoutMode)
800}(window, function (t) {
801    "use strict";
802    var e = t.create("fitRows"), i = e.prototype;
803    return i._resetLayout = function () {
804        this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement("gutter", "outerWidth")
805    }, i._getItemLayoutPosition = function (t) {
806        t.getSize();
807        var e = t.size.outerWidth + this.gutter, i = this.isotope.size.innerWidth + this.gutter;
808        0 !== this.x && e + this.x > i && (this.x = 0, this.y = this.maxY);
809        var n = {x: this.x, y: this.y};
810        return this.maxY = Math.max(this.maxY, this.y + t.size.outerHeight), this.x += e, n
811    }, i._getContainerSize = function () {
812        return {height: this.maxY}
813    }, e
814}), function (t, e) {
815    "function" == typeof define && define.amd ? define("isotope/js/layout-modes/vertical", ["../layout-mode"], e) : "object" == typeof module && module.exports ? module.exports = e(require("../layout-mode")) : e(t.Isotope.LayoutMode)
816}(window, function (t) {
817    "use strict";
818    var e = t.create("vertical", {horizontalAlignment: 0}), i = e.prototype;
819    return i._resetLayout = function () {
820        this.y = 0
821    }, i._getItemLayoutPosition = function (t) {
822        t.getSize();
823        var e = (this.isotope.size.innerWidth - t.size.outerWidth) * this.options.horizontalAlignment, i = this.y;
824        return this.y += t.size.outerHeight, {x: e, y: i}
825    }, i._getContainerSize = function () {
826        return {height: this.y}
827    }, e
828}), function (t, e) {
829    "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "desandro-matches-selector/matches-selector", "fizzy-ui-utils/utils", "isotope/js/item", "isotope/js/layout-mode", "isotope/js/layout-modes/masonry", "isotope/js/layout-modes/fit-rows", "isotope/js/layout-modes/vertical"], function (i, n, o, s, r, a) {
830        return e(t, i, n, o, s, r, a)
831    }) : "object" == typeof module && module.exports ? module.exports = e(t, require("outlayer"), require("get-size"), require("desandro-matches-selector"), require("fizzy-ui-utils"), require("isotope/js/item"), require("isotope/js/layout-mode"), require("isotope/js/layout-modes/masonry"), require("isotope/js/layout-modes/fit-rows"), require("isotope/js/layout-modes/vertical")) : t.Isotope = e(t, t.Outlayer, t.getSize, t.matchesSelector, t.fizzyUIUtils, t.Isotope.Item, t.Isotope.LayoutMode)
832}(window, function (t, e, i, n, o, s, r) {
833    function a(t, e) {
834        return function (i, n) {
835            for (var o = 0; o < t.length; o++) {
836                var s = t[o], r = i.sortData[s], a = n.sortData[s];
837                if (r > a || a > r) {
838                    var u = void 0 !== e[s] ? e[s] : e, h = u ? 1 : -1;
839                    return (r > a ? 1 : -1) * h
840                }
841            }
842            return 0
843        }
844    }
845
846    var u = t.jQuery, h = String.prototype.trim ? function (t) {
847        return t.trim()
848    } : function (t) {
849        return t.replace(/^\s+|\s+$/g, "")
850    }, d = e.create("isotope", {layoutMode: "masonry", isJQueryFiltering: !0, sortAscending: !0});
851    d.Item = s, d.LayoutMode = r;
852    var l = d.prototype;
853    l._create = function () {
854        this.itemGUID = 0, this._sorters = {}, this._getSorters(), e.prototype._create.call(this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = ["original-order"];
855        for (var t in r.modes)this._initLayoutMode(t)
856    }, l.reloadItems = function () {
857        this.itemGUID = 0, e.prototype.reloadItems.call(this)
858    }, l._itemize = function () {
859        for (var t = e.prototype._itemize.apply(this, arguments), i = 0; i < t.length; i++) {
860            var n = t[i];
861            n.id = this.itemGUID++
862        }
863        return this._updateItemsSortData(t), t
864    }, l._initLayoutMode = function (t) {
865        var e = r.modes[t], i = this.options[t] || {};
866        this.options[t] = e.options ? o.extend(e.options, i) : i, this.modes[t] = new e(this)
867    }, l.layout = function () {
868        return !this._isLayoutInited && this._getOption("initLayout") ? void this.arrange() : void this._layout()
869    }, l._layout = function () {
870        var t = this._getIsInstant();
871        this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, t), this._isLayoutInited = !0
872    }, l.arrange = function (t) {
873        this.option(t), this._getIsInstant();
874        var e = this._filter(this.items);
875        this.filteredItems = e.matches, this._bindArrangeComplete(), this._isInstant ? this._noTransition(this._hideReveal, [e]) : this._hideReveal(e), this._sort(), this._layout()
876    }, l._init = l.arrange, l._hideReveal = function (t) {
877        this.reveal(t.needReveal), this.hide(t.needHide)
878    }, l._getIsInstant = function () {
879        var t = this._getOption("layoutInstant"), e = void 0 !== t ? t : !this._isLayoutInited;
880        return this._isInstant = e, e
881    }, l._bindArrangeComplete = function () {
882        function t() {
883            e && i && n && o.dispatchEvent("arrangeComplete", null, [o.filteredItems])
884        }
885
886        var e, i, n, o = this;
887        this.once("layoutComplete", function () {
888            e = !0, t()
889        }), this.once("hideComplete", function () {
890            i = !0, t()
891        }), this.once("revealComplete", function () {
892            n = !0, t()
893        })
894    }, l._filter = function (t) {
895        var e = this.options.filter;
896        e = e || "*";
897        for (var i = [], n = [], o = [], s = this._getFilterTest(e), r = 0; r < t.length; r++) {
898            var a = t[r];
899            if (!a.isIgnored) {
900                var u = s(a);
901                u && i.push(a), u && a.isHidden ? n.push(a) : u || a.isHidden || o.push(a)
902            }
903        }
904        return {matches: i, needReveal: n, needHide: o}
905    }, l._getFilterTest = function (t) {
906        return u && this.options.isJQueryFiltering ? function (e) {
907            return u(e.element).is(t)
908        } : "function" == typeof t ? function (e) {
909            return t(e.element)
910        } : function (e) {
911            return n(e.element, t)
912        }
913    }, l.updateSortData = function (t) {
914        var e;
915        t ? (t = o.makeArray(t), e = this.getItems(t)) : e = this.items, this._getSorters(), this._updateItemsSortData(e)
916    }, l._getSorters = function () {
917        var t = this.options.getSortData;
918        for (var e in t) {
919            var i = t[e];
920            this._sorters[e] = f(i)
921        }
922    }, l._updateItemsSortData = function (t) {
923        for (var e = t && t.length, i = 0; e && e > i; i++) {
924            var n = t[i];
925            n.updateSortData()
926        }
927    };
928    var f = function () {
929        function t(t) {
930            if ("string" != typeof t)return t;
931            var i = h(t).split(" "), n = i[0], o = n.match(/^\[(.+)\]$/), s = o && o[1], r = e(s, n), a = d.sortDataParsers[i[1]];
932            return t = a ? function (t) {
933                return t && a(r(t))
934            } : function (t) {
935                return t && r(t)
936            }
937        }
938
939        function e(t, e) {
940            return t ? function (e) {
941                return e.getAttribute(t)
942            } : function (t) {
943                var i = t.querySelector(e);
944                return i && i.textContent
945            }
946        }
947
948        return t
949    }();
950    d.sortDataParsers = {
951        parseInt: function (t) {
952            return parseInt(t, 10)
953        }, parseFloat: function (t) {
954            return parseFloat(t)
955        }
956    }, l._sort = function () {
957        var t = this.options.sortBy;
958        if (t) {
959            var e = [].concat.apply(t, this.sortHistory), i = a(e, this.options.sortAscending);
960            this.filteredItems.sort(i), t != this.sortHistory[0] && this.sortHistory.unshift(t)
961        }
962    }, l._mode = function () {
963        var t = this.options.layoutMode, e = this.modes[t];
964        if (!e)throw new Error("No layout mode: " + t);
965        return e.options = this.options[t], e
966    }, l._resetLayout = function () {
967        e.prototype._resetLayout.call(this), this._mode()._resetLayout()
968    }, l._getItemLayoutPosition = function (t) {
969        return this._mode()._getItemLayoutPosition(t)
970    }, l._manageStamp = function (t) {
971        this._mode()._manageStamp(t)
972    }, l._getContainerSize = function () {
973        return this._mode()._getContainerSize()
974    }, l.needsResizeLayout = function () {
975        return this._mode().needsResizeLayout()
976    }, l.appended = function (t) {
977        var e = this.addItems(t);
978        if (e.length) {
979            var i = this._filterRevealAdded(e);
980            this.filteredItems = this.filteredItems.concat(i)
981        }
982    }, l.prepended = function (t) {
983        var e = this._itemize(t);
984        if (e.length) {
985            this._resetLayout(), this._manageStamps();
986            var i = this._filterRevealAdded(e);
987            this.layoutItems(this.filteredItems), this.filteredItems = i.concat(this.filteredItems), this.items = e.concat(this.items)
988        }
989    }, l._filterRevealAdded = function (t) {
990        var e = this._filter(t);
991        return this.hide(e.needHide), this.reveal(e.matches), this.layoutItems(e.matches, !0), e.matches
992    }, l.insert = function (t) {
993        var e = this.addItems(t);
994        if (e.length) {
995            var i, n, o = e.length;
996            for (i = 0; o > i; i++)n = e[i], this.element.appendChild(n.element);
997            var s = this._filter(e).matches;
998            for (i = 0; o > i; i++)e[i].isLayoutInstant = !0;
999            for (this.arrange(), i = 0; o > i; i++)delete e[i].isLayoutInstant;
1000            this.reveal(s)
1001        }
1002    };
1003    var c = l.remove;
1004    return l.remove = function (t) {
1005        t = o.makeArray(t);
1006        var e = this.getItems(t);
1007        c.call(this, t);
1008        for (var i = e && e.length, n = 0; i && i > n; n++) {
1009            var s = e[n];
1010            o.removeFrom(this.filteredItems, s)
1011        }
1012    }, l.shuffle = function () {
1013        for (var t = 0; t < this.items.length; t++) {
1014            var e = this.items[t];
1015            e.sortData.random = Math.random()
1016        }
1017        this.options.sortBy = "random", this._sort(), this._layout()
1018    }, l._noTransition = function (t, e) {
1019        var i = this.options.transitionDuration;
1020        this.options.transitionDuration = 0;
1021        var n = t.apply(this, e);
1022        return this.options.transitionDuration = i, n
1023    }, l.getFilteredItemElements = function () {
1024        return this.filteredItems.map(function (t) {
1025            return t.element
1026        })
1027    }, d
1028});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.