PageSourceSearch

https://thinkgpa.com/_static/??-eJytkFsKwkAMRTdkm4rFx4eIC3ARwxjalE…/eJlPXjC2/nnLh8/Zw6vbHvu92T6JLjiU=

js thinkgpa.com collected 2026-10-07 04:06:51 UTC 69,415 bytes, 914 lines download raw bytes

1(function() {
2    function TheGemHeading() {
3        this.animateClass = 'thegem-heading-animate';
4        this.animatedClass = 'thegem-heading-animated';
5    }
6
7    TheGemHeading.prototype = {
8        initialize: function () {
9            let items =  document.querySelectorAll('.'+this.animateClass);
10
11            items.forEach((item)=>{
12                if (this.isElementVisible(item)) {
13                    this.prepareAnimation(item);
14                    this.startAnimation(item);
15                }
16            });
17
18            if ('ResizeObserver' in window) {
19                const resizeObserver = new ResizeObserver((entries) => {
20                    entries.forEach((entry) => {
21                        this.prepareAnimation(entry.target);
22                    });
23                });
24                items.forEach((item) => {
25                    resizeObserver.observe(item);
26                });
27            }
28
29            if ('IntersectionObserver' in window) {
30                let intersectionObserver = new IntersectionObserver((entries)=>{
31                    entries.forEach((entry)=> {
32                        if (entry.isIntersecting) {
33                            this.startAnimation(entry.target);
34                            intersectionObserver.unobserve(entry.target);
35                        }
36                    });
37                });
38
39                items.forEach((item)=>{
40                    intersectionObserver.observe(item);
41                    this.prepareAnimation(item);
42                });
43            } else {
44                items.forEach((item)=>{
45                    this.prepareAnimation(item);
46                    this.startAnimation(item);
47                });
48            }
49        },
50
51        isElementVisible: function (element) {
52            let rect   = element.getBoundingClientRect(),
53                width  = window.innerWidth || document.documentElement.clientWidth,
54                height = window.innerHeight || document.documentElement.clientHeight,
55                efp    = (x, y) => document.elementFromPoint(x, y);
56
57            if (rect.right < 0 || rect.bottom < 0 || rect.left > width || rect.top > height) return false;
58            return (element.contains(efp(rect.left,  rect.top)) ||  element.contains(efp(rect.right, rect.top)) ||  element.contains(efp(rect.right, rect.bottom)) ||  element.contains(efp(rect.left,  rect.bottom)));
59        },
60
61        startAnimation: function (element) {
62            if (element && !element.classList.contains(this.animatedClass)) {
63                element.classList.add(this.animatedClass);
64                element.classList.remove(this.animateClass);
65                element.dispatchEvent(new Event('theGemHeading.startAnimation', {bubbles: true}));
66            }
67        },
68
69        prepareAnimation: function (element) {
70            if (element/* && !element.isPreparedAnimation*/) {
71                element.dispatchEvent(new Event('theGemHeading.prepareAnimation', {bubbles: true}));
72                /*element.isPreparedAnimation = true;*/
73            }
74        }
75    };
76
77    window.theGemHeading = new TheGemHeading();
78    document.addEventListener('DOMContentLoaded', function() {
79        window.theGemHeading.initialize();
80    });
81})();;
82document.addEventListener('theGemHeading.prepareAnimation', function(event) {
83    const element = event.target;
84    const animationName = element.dataset.animationName;
85
86    if (element && ['lines-slide-up', 'lines-slide-up-random'].includes(animationName)) {
87        theGemHeadingPrepareAnimation(element);
88    }
89});
90
91function theGemHeadingPrepareAnimation(element) {
92    if (!element) return;
93
94    const isDesktop = window.innerWidth > 1024;
95    const isTablet = window.innerWidth <= 1024 && window.innerWidth >= 768;
96    const isMobile = window.innerWidth < 768;
97
98    /*if (element.classList.contains('animation-prepared')) return;*/
99    if (element.classList.contains('thegem-heading-animate-disable-desktop') && isDesktop) return;
100    if (element.classList.contains('thegem-heading-animate-disable-tablet') && isTablet) return;
101    if (element.classList.contains('thegem-heading-animate-disable-mobile') && isMobile) return;
102
103    const animationName = element.dataset.animationName;
104    const animationDelay = parseInt(element.dataset.animationDelay) || 0;
105    const animationInterval = parseInt(element.dataset.animationInterval) || 0;
106
107    switch (animationName) {
108        case 'lines-slide-up':
109        case 'lines-slide-up-random':
110            const animationLineTagWrap = '<span class="thegem-heading-line-wrap">';
111
112            let animationLineTag = function (index) {
113                let styles = '';
114                if (animationName === 'lines-slide-up' && (animationDelay > 0 || animationInterval > 0)) {
115                    styles = `animation-delay: ${(animationDelay + (animationInterval*(index+1)))}ms;`;
116                }
117                return '<span class="thegem-heading-line"' + (styles!== '' ? ' style="'+styles+'"' : '') + '>';
118            };
119
120            let nodes = element.childNodes;
121            let currentOffset = nodes[0].offsetTop;
122            let index = 0;
123            let idx = 0;
124
125            if (element.classList.contains('animation-prepared')) {
126                const originalNodes = [];
127                const lineWraps = element.querySelectorAll('.thegem-heading-line-wrap');
128
129                lineWraps.forEach(wrap => {
130                    const line = wrap.querySelector('.thegem-heading-line');
131                    if (line) {
132                        while (line.firstChild) {
133                            wrap.parentNode.insertBefore(line.firstChild, wrap);
134                        }
135                    }
136                    wrap.remove();
137                });
138
139                element.classList.remove('animation-prepared');
140            }
141
142            let html = animationLineTagWrap + animationLineTag(index);
143
144            for (let i = 0; i < nodes.length; i++) {
145                if (nodes[i].nodeType === 3) continue;
146
147                if (nodes[i].offsetTop > currentOffset + nodes[i].scrollHeight/2) {
148                    index++;
149                    html += '</span></span>' + animationLineTagWrap + animationLineTag(index);
150                    currentOffset = nodes[i].offsetTop;
151
152                    if (animationName === 'lines-slide-up-random') idx = 0;
153                }
154
155                if (animationName === 'lines-slide-up-random' && (animationDelay > 0 || animationInterval > 0)) {
156                    nodes[i].style.animationDelay = (animationDelay + animationInterval*(idx+1)) + 'ms';
157                }
158
159                html += nodes[i].outerHTML + ' ';
160
161                if (animationName === 'lines-slide-up-random') idx++;
162            }
163
164            html += '</span></span>';
165
166            element.innerHTML = html;
167
168            break;
169    }
170
171    element.classList.add('animation-prepared');
172};
173(function($) {
174
175    var animations = {
176
177        'move-up': {
178            timeout: 200
179        },
180
181        bounce: {
182            timeout: 100
183        },
184
185        'fade-in': {
186            timeout: 100
187        },
188
189        scale: {
190            timeout: 100
191        },
192
193        flip: {
194            timeout: 100
195        },
196
197        'fall-perspective': {
198            timeout: 100
199        },
200
201    };
202
203    var prefixes = 'Webkit Moz ms Ms O'.split(' ');
204    var docElemStyle = document.documentElement.style;
205
206    function getStyleProperty( propName ) {
207        if ( !propName ) {
208            return;
209        }
210
211        // test standard property first
212        if ( typeof docElemStyle[ propName ] === 'string' ) {
213            return propName;
214        }
215
216        // capitalize
217        propName = propName.charAt(0).toUpperCase() + propName.slice(1);
218
219        // test vendor specific properties
220        var prefixed;
221        for ( var i=0, len = prefixes.length; i < len; i++ ) {
222            prefixed = prefixes[i] + propName;
223            if ( typeof docElemStyle[ prefixed ] === 'string' ) {
224                return prefixed;
225            }
226        }
227    }
228
229    var transitionProperty = getStyleProperty('transition');
230    var transitionEndEvent = {
231        WebkitTransition: 'webkitTransitionEnd',
232        MozTransition: 'transitionend',
233        OTransition: 'otransitionend',
234        transition: 'transitionend'
235    }[ transitionProperty ];
236
237
238    function ItemsAnimations(el, options) {
239		var self = this;
240		this.el = el;
241		this.$el = $(el);
242
243		this.options = {
244            itemSelector: '',
245            scrollMonitor: false,
246            firstItemStatic: false
247		};
248		$.extend(this.options, options);
249
250        this.$el.data('itemsAnimations', this);
251
252        self.initialize();
253	}
254
255	$.fn.itemsAnimations = function(options) {
256        if ( typeof options === 'string' ) {
257            var instance = $(this.get(0)).data('itemsAnimations');
258            if (!instance) {
259                return false;
260            }
261            if (options === 'instance') {
262                return instance;
263            }
264        } else {
265            return new ItemsAnimations(this.get(0), options);
266        }
267	}
268
269    ItemsAnimations.prototype = {
270
271        initialize: function() {
272            var self = this;
273
274            this.queue = [];
275            this.queue_is_run = false;
276            this.watchers = {};
277
278            this.animation = this.getAnimation();
279            if (!this.animation || ($(window).width() < 768 && !this.$el.hasClass('enable-animation-mobile'))) {
280                this.animationName = 'disabled';
281                this.animation = this.getAnimationByName('disabled');
282            }
283
284            if (this.options.firstItemStatic) {
285                this.firstStatisItem = $(this.options.itemSelector + ':first', this.$el);
286                this.firstStatisItem.removeClass('item-animations-not-inited');
287            }
288
289            if (this.animationName == 'disabled') {
290                $(this.options.itemSelector, this.$el).removeClass('item-animations-not-inited');
291            }
292
293            // this.initTimer();
294        },
295
296        initTimer: function() {
297			var self = this;
298
299			this.timer = document.createElement('div');
300			this.timer.className = 'items-animations-timer-element';
301            if (this.animation.timeout > 0) {
302                this.timer.setAttribute(
303                    "style",
304                    "transition-duration: " + this.animation.timeout + "ms; -webkit-transition-duration: " + this.animation.timeout + "ms; -moz-transition-duration: " + this.animation.timeout + "ms; -o-transition-duration: " + this.animation.timeout + "ms;"
305                );
306            }
307			document.body.appendChild(this.timer);
308			this.timerCallback = function() {};
309			$(this.timer).bind(transitionEndEvent, function(event) {
310				self.timerCallback();
311			});
312            this.timer.className += ' start-timer';
313		},
314
315        startTimer: function(callback) {
316            setTimeout(callback, this.animation.timeout);
317        },
318
319        startTimerOld: function(callback) {
320			this.timerCallback = callback;
321			if (this.timer.className.indexOf('start-timer') != -1) {
322				this.timer.className = this.timer.className.replace(' start-timer', '');
323			} else {
324				this.timer.className += ' start-timer';
325			}
326		},
327
328        show: function($items, forceUseScrollMonitor) {
329            var self = this;
330
331            if (forceUseScrollMonitor === undefined) {
332                forceUseScrollMonitor = false;
333            }
334
335            if (this.animationName == 'disabled') {
336                $(this.options.itemSelector, this.$el).removeClass('item-animations-not-inited');
337                return false;
338            }
339
340            if ($items == undefined) {
341                $items = $(this.options.itemSelector, this.$el);
342            }
343
344            $items.not('.item-animations-inited').each(function(index) {
345    			var $this = $(this);
346
347                if (self.options.firstItemStatic && self.firstStatisItem && self.firstStatisItem.get(0) == this) {
348                    $this.addClass('item-animations-inited');
349                    return;
350                }
351
352                $this.addClass('item-animations-inited');
353
354                if ((self.options.scrollMonitor || forceUseScrollMonitor) && window.scrollMonitor !== undefined && this.animationName != 'disabled') {
355                    var watcher = scrollMonitor.create(this, -50);
356        			watcher.enterViewport(function() {
357        				var watcher = this;
358                        self.showItem($this, watcher);
359        			});
360                    self.watchers[ watcher.uid ] = watcher;
361                } else {
362                    self.showItem($this);
363                }
364    		});
365
366            $(this.options.itemSelector, this.$el).not('.item-animations-inited').removeClass('item-animations-not-inited');
367
368        },
369
370        reinitItems: function($items) {
371            $items.removeClass('start-animation item-animations-inited item-animations-loading before-start').addClass('item-animations-not-inited');
372            this.clear();
373        },
374
375        getAnimationName: function() {
376            var m = this.$el[0].className.match(/item-animation-(\S+)/);
377            if (!m) {
378                return '';
379            }
380            return m[1];
381        },
382
383        getAnimation: function() {
384            this.animationName = this.getAnimationName();
385            return this.getAnimationByName(this.animationName);
386        },
387
388        getAnimationByName: function(name) {
389            if (!name || animations[name] == undefined) {
390                return false;
391            }
392            return animations[name];
393        },
394
395        showItem: function($item, watcher) {
396            var self = this;
397
398            if ($item.hasClass('item-animations-loading')) {
399                return false;
400            }
401
402            $item.addClass('before-start');
403
404            function showItemCallback() {
405                if ($item.length == 0) {
406                    return false;
407                }
408
409                self.animate($item);
410
411                if (watcher != undefined) {
412                    self.destroyWatcher(watcher);
413                }
414            }
415
416            $item.addClass('item-animations-loading');
417            if (this.animation.timeout > 0) {
418                this.queueAdd(showItemCallback, this.animation.timeout);
419            } else {
420                showItemCallback();
421            }
422        },
423
424        destroyWatcher: function(watcher) {
425            if (this.watchers[ watcher.uid ] != undefined) {
426                delete this.watchers[ watcher.uid ];
427            }
428
429            watcher.destroy();
430        },
431
432        animate: function($item, animation) {
433            $item.bind(transitionEndEvent, function(event) {
434                var target = event.target || event.srcElement;
435                if (target != $item[0]) {
436                    return;
437                }
438                $item.unbind(transitionEndEvent);
439                $item.removeClass('before-start start-animation');
440            });
441
442            $item.removeClass('item-animations-loading item-animations-not-inited').addClass('start-animation');
443        },
444
445        queueAdd: function(callback, timeout) {
446            var self = this;
447
448    		this.queue.push({
449    			callback: callback,
450                timeout: timeout
451    		});
452
453    		if (this.queue.length == 1 && !this.queue_is_run) {
454                this.startTimer(function() {
455                    self.queueNext();
456                });
457    		}
458    	},
459
460        queueNext: function() {
461            var self = this;
462
463    		if (this.queue.length == 0) {
464    			return false;
465    		}
466
467    		var next_action = this.queue.shift();
468
469    		if (next_action == undefined) {
470    			return false;
471    		}
472
473    		this.queue_is_run = true;
474    		next_action.callback();
475
476            this.startTimer(function() {
477                self.queue_is_run = false;
478                self.queueNext();
479            });
480    	},
481
482        clear: function() {
483            this.queue = [];
484            this.queue_is_run = false;
485
486            for (var watcher_uid in this.watchers) {
487                if (this.watchers.hasOwnProperty(watcher_uid)) {
488                    this.destroyWatcher(this.watchers[watcher_uid]);
489                }
490            }
491
492            this.watchers = [];
493        }
494
495    };
496
497})(jQuery);
498;
499(function( factory ) {
500	if (typeof define !== 'undefined' && define.amd) {
501		define([], factory);
502	} else if (typeof module !== 'undefined' && module.exports) {
503		module.exports = factory();
504	} else {
505		window.scrollMonitor = factory();
506	}
507})(function() {
508
509	var scrollTop = function() {
510		return window.pageYOffset ||
511			(document.documentElement && document.documentElement.scrollTop) ||
512			document.body.scrollTop;
513	};
514
515	var exports = {};
516
517	var watchers = [];
518
519	var VISIBILITYCHANGE = 'visibilityChange';
520	var ENTERVIEWPORT = 'enterViewport';
521	var FULLYENTERVIEWPORT = 'fullyEnterViewport';
522	var EXITVIEWPORT = 'exitViewport';
523	var PARTIALLYEXITVIEWPORT = 'partiallyExitViewport';
524	var LOCATIONCHANGE = 'locationChange';
525	var STATECHANGE = 'stateChange';
526
527	var eventTypes = [
528		VISIBILITYCHANGE,
529		ENTERVIEWPORT,
530		FULLYENTERVIEWPORT,
531		EXITVIEWPORT,
532		PARTIALLYEXITVIEWPORT,
533		LOCATIONCHANGE,
534		STATECHANGE
535	];
536
537	var defaultOffsets = {top: 0, bottom: 0};
538
539	var getViewportHeight = function() {
540		return window.innerHeight || document.documentElement.clientHeight;
541	};
542
543	var getDocumentHeight = function() {
544		// jQuery approach
545		// whichever is greatest
546		return Math.max(
547			document.body.scrollHeight, document.documentElement.scrollHeight,
548			document.body.offsetHeight, document.documentElement.offsetHeight,
549			document.documentElement.clientHeight
550		);
551	};
552
553	exports.viewportTop = null;
554	exports.viewportBottom = null;
555	exports.documentHeight = null;
556	exports.viewportHeight = getViewportHeight();
557
558	var previousDocumentHeight;
559	var latestEvent;
560
561	var calculateViewportI;
562	function calculateViewport() {
563		exports.viewportTop = scrollTop();
564		exports.viewportBottom = exports.viewportTop + exports.viewportHeight;
565		exports.documentHeight = getDocumentHeight();
566		if (exports.documentHeight !== previousDocumentHeight) {
567			calculateViewportI = watchers.length;
568			while( calculateViewportI-- ) {
569				watchers[calculateViewportI].recalculateLocation();
570			}
571			previousDocumentHeight = exports.documentHeight;
572		}
573	}
574
575	function recalculateWatchLocationsAndTrigger() {
576		exports.viewportHeight = getViewportHeight();
577		calculateViewport();
578		updateAndTriggerWatchers();
579	}
580
581	var recalculateAndTriggerTimer;
582	function debouncedRecalcuateAndTrigger() {
583		clearTimeout(recalculateAndTriggerTimer);
584		recalculateAndTriggerTimer = setTimeout( recalculateWatchLocationsAndTrigger, 100 );
585	}
586
587	var updateAndTriggerWatchersI;
588	function updateAndTriggerWatchers() {
589		// update all watchers then trigger the events so one can rely on another being up to date.
590		updateAndTriggerWatchersI = watchers.length;
591		var i = 0;
592		while( i < updateAndTriggerWatchersI ) {
593			watchers[i].update();
594			i++;
595		}
596
597		updateAndTriggerWatchersI = watchers.length;
598		var j = 0,
599			newLength;
600		while( j < updateAndTriggerWatchersI ) {
601			watchers[j].triggerCallbacks();
602
603			newLength = watchers.length;
604
605			if (newLength < updateAndTriggerWatchersI) {
606				j -= updateAndTriggerWatchersI - newLength;
607			}
608
609			updateAndTriggerWatchersI = newLength;
610			j++;
611		}
612
613	}
614
615	function ElementWatcher( watchItem, offsets ) {
616		var self = this;
617
618		this.watchItem = watchItem;
619
620		this.uid = Math.random().toString(36).substring(8);
621
622		if (!offsets) {
623			this.offsets = defaultOffsets;
624		} else if (offsets === +offsets) {
625			this.offsets = {top: offsets, bottom: offsets};
626		} else {
627			this.offsets = {
628				top: offsets.top || defaultOffsets.top,
629				bottom: offsets.bottom || defaultOffsets.bottom
630			};
631		}
632
633		this.callbacks = {}; // {callback: function, isOne: true }
634
635		for (var i = 0, j = eventTypes.length; i < j; i++) {
636			self.callbacks[eventTypes[i]] = [];
637		}
638
639		this.locked = false;
640
641		var wasInViewport;
642		var wasFullyInViewport;
643		var wasAboveViewport;
644		var wasBelowViewport;
645
646		var listenerToTriggerListI;
647		var listener;
648		function triggerCallbackArray( listeners ) {
649			if (listeners.length === 0) {
650				return;
651			}
652			listenerToTriggerListI = listeners.length;
653			while( listenerToTriggerListI-- ) {
654				listener = listeners[listenerToTriggerListI];
655				listener.callback.call( self, latestEvent );
656				if (listener.isOne) {
657					listeners.splice(listenerToTriggerListI, 1);
658				}
659			}
660		}
661		this.triggerCallbacks = function triggerCallbacks() {
662
663			if (this.isInViewport && !wasInViewport) {
664				triggerCallbackArray( this.callbacks[ENTERVIEWPORT] );
665			}
666			if (this.isFullyInViewport && !wasFullyInViewport) {
667				triggerCallbackArray( this.callbacks[FULLYENTERVIEWPORT] );
668			}
669
670
671			if (this.isAboveViewport !== wasAboveViewport &&
672				this.isBelowViewport !== wasBelowViewport) {
673
674				triggerCallbackArray( this.callbacks[VISIBILITYCHANGE] );
675
676				// if you skip completely past this element
677				if (!wasFullyInViewport && !this.isFullyInViewport) {
678					triggerCallbackArray( this.callbacks[FULLYENTERVIEWPORT] );
679					triggerCallbackArray( this.callbacks[PARTIALLYEXITVIEWPORT] );
680				}
681				if (!wasInViewport && !this.isInViewport) {
682					triggerCallbackArray( this.callbacks[ENTERVIEWPORT] );
683					triggerCallbackArray( this.callbacks[EXITVIEWPORT] );
684				}
685			}
686
687			if (!this.isFullyInViewport && wasFullyInViewport) {
688				triggerCallbackArray( this.callbacks[PARTIALLYEXITVIEWPORT] );
689			}
690			if (!this.isInViewport && wasInViewport) {
691				triggerCallbackArray( this.callbacks[EXITVIEWPORT] );
692			}
693			if (this.isInViewport !== wasInViewport) {
694				triggerCallbackArray( this.callbacks[VISIBILITYCHANGE] );
695			}
696			switch( true ) {
697				case wasInViewport !== this.isInViewport:
698				case wasFullyInViewport !== this.isFullyInViewport:
699				case wasAboveViewport !== this.isAboveViewport:
700				case wasBelowViewport !== this.isBelowViewport:
701					triggerCallbackArray( this.callbacks[STATECHANGE] );
702			}
703
704			wasInViewport = this.isInViewport;
705			wasFullyInViewport = this.isFullyInViewport;
706			wasAboveViewport = this.isAboveViewport;
707			wasBelowViewport = this.isBelowViewport;
708
709		};
710
711		this.recalculateLocation = function() {
712			if (this.locked) {
713				return;
714			}
715			var previousTop = this.top;
716			var previousBottom = this.bottom;
717			if (this.watchItem.nodeName) { // a dom element
718				var cachedDisplay = this.watchItem.style.display;
719				if (cachedDisplay === 'none') {
720					this.watchItem.style.display = '';
721				}
722
723				var boundingRect = this.watchItem.getBoundingClientRect();
724				this.top = boundingRect.top + exports.viewportTop;
725				this.bottom = boundingRect.bottom + exports.viewportTop;
726
727				if (cachedDisplay === 'none') {
728					this.watchItem.style.display = cachedDisplay;
729				}
730
731			} else if (this.watchItem === +this.watchItem) { // number
732				if (this.watchItem > 0) {
733					this.top = this.bottom = this.watchItem;
734				} else {
735					this.top = this.bottom = exports.documentHeight - this.watchItem;
736				}
737
738			} else { // an object with a top and bottom property
739				this.top = this.watchItem.top;
740				this.bottom = this.watchItem.bottom;
741			}
742
743			this.top -= this.offsets.top;
744			this.bottom += this.offsets.bottom;
745			this.height = this.bottom - this.top;
746
747			if ( (previousTop !== undefined || previousBottom !== undefined) && (this.top !== previousTop || this.bottom !== previousBottom) ) {
748				triggerCallbackArray( this.callbacks[LOCATIONCHANGE] );
749			}
750		};
751
752		this.recalculateLocation();
753		this.update();
754
755		wasInViewport = this.isInViewport;
756		wasFullyInViewport = this.isFullyInViewport;
757		wasAboveViewport = this.isAboveViewport;
758		wasBelowViewport = this.isBelowViewport;
759	}
760
761	ElementWatcher.prototype = {
762		on: function( event, callback, isOne ) {
763
764			// trigger the event if it applies to the element right now.
765			switch( true ) {
766				case event === VISIBILITYCHANGE && !this.isInViewport && this.isAboveViewport:
767				case event === ENTERVIEWPORT && this.isInViewport:
768				case event === FULLYENTERVIEWPORT && this.isFullyInViewport:
769				case event === EXITVIEWPORT && this.isAboveViewport && !this.isInViewport:
770				case event === PARTIALLYEXITVIEWPORT && this.isAboveViewport:
771					callback.call( this, latestEvent );
772					if (isOne) {
773						return;
774					}
775			}
776
777			if (this.callbacks[event]) {
778				this.callbacks[event].push({callback: callback, isOne: isOne||false});
779			} else {
780				throw new Error('Tried to add a scroll monitor listener of type '+event+'. Your options are: '+eventTypes.join(', '));
781			}
782		},
783		off: function( event, callback ) {
784			if (this.callbacks[event]) {
785				for (var i = 0, item; item = this.callbacks[event][i]; i++) {
786					if (item.callback === callback) {
787						this.callbacks[event].splice(i, 1);
788						break;
789					}
790				}
791			} else {
792				throw new Error('Tried to remove a scroll monitor listener of type '+event+'. Your options are: '+eventTypes.join(', '));
793			}
794		},
795		one: function( event, callback ) {
796			this.on( event, callback, true);
797		},
798		recalculateSize: function() {
799			this.height = this.watchItem.offsetHeight + this.offsets.top + this.offsets.bottom;
800			this.bottom = this.top + this.height;
801		},
802		update: function() {
803			this.isAboveViewport = this.top < exports.viewportTop;
804			this.isBelowViewport = this.bottom > exports.viewportBottom;
805
806			this.isInViewport = (this.top <= exports.viewportBottom && this.bottom >= exports.viewportTop);
807			this.isFullyInViewport = (this.top >= exports.viewportTop && this.bottom <= exports.viewportBottom) ||
808								 (this.isAboveViewport && this.isBelowViewport);
809
810		},
811		destroy: function() {
812			var index = -1,
813				self  = this;
814
815			for (var i = 0; i < watchers.length; i++) {
816				if (this.uid == watchers[i].uid) {
817					index = i;
818					break;
819				}
820			}
821
822			if (index == -1) {
823				index = watchers.indexOf(this);
824			}
825
826			watchers.splice(index, 1);
827			for (var i = 0, j = eventTypes.length; i < j; i++) {
828				self.callbacks[eventTypes[i]].length = 0;
829			}
830		},
831		// prevent recalculating the element location
832		lock: function() {
833			this.locked = true;
834		},
835		unlock: function() {
836			this.locked = false;
837		}
838	};
839
840	var eventHandlerFactory = function (type) {
841		return function( callback, isOne ) {
842			this.on.call(this, type, callback, isOne);
843		};
844	};
845
846	for (var i = 0, j = eventTypes.length; i < j; i++) {
847		var type =  eventTypes[i];
848		ElementWatcher.prototype[type] = eventHandlerFactory(type);
849	}
850
851	try {
852		calculateViewport();
853	} catch (e) {
854		try {
855			window.$(calculateViewport);
856		} catch (e) {
857			throw new Error('If you must put scrollMonitor in the <head>, you must use jQuery.');
858		}
859	}
860
861	function scrollMonitorListener(event) {
862		latestEvent = event;
863		calculateViewport();
864		updateAndTriggerWatchers();
865	}
866
867	if (window.addEventListener) {
868		window.addEventListener('scroll', scrollMonitorListener);
869		window.addEventListener('resize', debouncedRecalcuateAndTrigger);
870	} else {
871		// Old IE support
872		window.attachEvent('onscroll', scrollMonitorListener);
873		window.attachEvent('onresize', debouncedRecalcuateAndTrigger);
874	}
875
876	exports.beget = exports.create = function( element, offsets ) {
877		if (typeof element === 'string') {
878			element = document.querySelector(element);
879		} else if (element && element.length > 0) {
880			element = element[0];
881		}
882
883		var watcher = new ElementWatcher( element, offsets );
884		watchers.push(watcher);
885		watcher.update();
886		return watcher;
887	};
888
889	exports.update = function() {
890		latestEvent = null;
891		calculateViewport();
892		updateAndTriggerWatchers();
893	};
894	exports.recalculateLocations = function() {
895		exports.documentHeight = 0;
896		exports.update();
897	};
898
899	return exports;
900});
901;
902/*!
903 * Isotope PACKAGED v2.2.2
904 *
905 * Licensed GPLv3 for open source use
906 * or Isotope Commercial License for commercial use
907 *
908 * http://isotope.metafizzy.co
909 * Copyright 2015 Metafizzy
910 */
911
912!function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(window),function(){"use strict";function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b].listener);return c},d.getListenersAsObject=function(a){var b,c=this.getListeners(a);return c instanceof Array&&(b={},b[a]=c),b||c},d.addListener=function(a,c){var d,e=this.getListenersAsObject(a),f="object"==typeof c;for(d in e)e.hasOwnProperty(d)&&-1===b(e[d],c)&&e[d].push(f?c:{listener:c,once:!1});return this},d.on=c("addListener"),d.addOnceListener=function(a,b){return this.addListener(a,{listener:b,once:!0})},d.once=c("addOnceListener"),d.defineEvent=function(a){return this.getListeners(a),this},d.defineEvents=function(a){for(var b=0;b<a.length;b+=1)this.defineEvent(a[b]);return this},d.removeListener=function(a,c){var d,e,f=this.getListenersAsObject(a);for(e in f)f.hasOwnProperty(e)&&(d=b(f[e],c),-1!==d&&f[e].splice(d,1));return this},d.off=c("removeListener"),d.addListeners=function(a,b){return this.manipulateListeners(!1,a,b)},d.removeListeners=function(a,b){return this.manipulateListeners(!0,a,b)},d.manipulateListeners=function(a,b,c){var d,e,f=a?this.removeListener:this.addListener,g=a?this.removeListeners:this.addListeners;if("object"!=typeof b||b instanceof RegExp)for(d=c.length;d--;)f.call(this,b,c[d]);else for(d in b)b.hasOwnProperty(d)&&(e=b[d])&&("function"==typeof e?f.call(this,d,e):g.call(this,d,e));return this},d.removeEvent=function(a){var b,c=typeof a,d=this._getEvents();if("string"===c)delete d[a];else if(a instanceof RegExp)for(b in d)d.hasOwnProperty(b)&&a.test(b)&&delete d[b];else delete this._events;return this},d.removeAllListeners=c("removeEvent"),d.emitEvent=function(a,b){var c,d,e,f,g=this.getListenersAsObject(a);for(e in g)if(g.hasOwnProperty(e))for(d=g[e].length;d--;)c=g[e][d],c.once===!0&&this.removeListener(a,c.listener),f=c.listener.apply(this,b||[]),f===this._getOnceReturnValue()&&this.removeListener(a,c.listener);return this},d.trigger=c("emitEvent"),d.emit=function(a){var b=Array.prototype.slice.call(arguments,1
912);return this.emitEvent(a,b)},d.setOnceReturnValue=function(a){return this._onceReturnValue=a,this},d._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},d._getEvents=function(){return this._events||(this._events={})},a.noConflict=function(){return e.EventEmitter=f,a},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return a}):"object"==typeof module&&module.exports?module.exports=a:e.EventEmitter=a}.call(this),function(a){function b(a){if(a){if("string"==typeof d[a])return a;a=a.charAt(0).toUpperCase()+a.slice(1);for(var b,e=0,f=c.length;f>e;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a,b){function c(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function d(){}function e(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=h.length;c>b;b++){var d=h[b];a[d]=0}return a}function f(b){function d(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||g("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=b("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var f=document.body||document.documentElement;f.appendChild(e);var h=j(e);l=200===c(h.width),f.removeChild(e)}}}function f(a){if(d(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var b=j(a);if("none"===b.display)return e();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var g=f.isBorderBox=!(!k||!b[k]||"border-box"!==b[k]),m=0,n=h.length;n>m;m++){var o=h[m],p=b[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=g&&l,y=c(b.width);y!==!1&&(f.width=y+(x?0:r+v));var z=c(b.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}var j,k,l,m=!1;return f}var g="undefined"==typeof console?d:function(a){console.error(a)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],f):"object"==typeof exports?module.exports=f(require("desandro-get-style-property")):a.getSize=f(a.getStyleProperty)}(window),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(a){"use strict";function b(a,b){return a[g](b)}function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}function e(a,d){return c(a),b(a,d)}var f,g=function(){if(a.matches)return"matches";if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a,b){"use strict";"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["doc-ready/doc-ready","matches-selector/matches-selector"],function(c,d){return b(a,c,d)}):"object"==typeof exports?module.exports=b(a,require("doc-ready"),require("desandro-matches-selector")):a.fizzyUIUtils=b(a,a.docReady,a.matchesSelector)}(window,function(a,b,c){var d={};d.extend=function(a,b){for(var c in b)a[c]=b[c];return a},d.modulo=function(a,b){return(a%b+b)%b};var e=Object.prototype.toString;d.isArray=function(a){return"[object Array]"==e.call(a)},d.makeArray=function(a){var b=[];if(d.isArray(a))b=a;else if(a&&"number"==typeof a.length)for(var c=0,e=a.length;e>c;c++)b.push(a[c]);else b.push(a);return b},d.indexOf=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},d.removeFrom=function(a,b){var c=d.indexOf(a,b);-1!=c&&a.splice(c,1)},d.isElement="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1==a.nodeType&&"string"==typeof a.nodeName},d.setText=function(){function a(a,c){b=b||(void 0!==document.documentElement.textContent?"textContent":"innerText"),a[b]=c}var b;return a}(),d.getParent=function(a,b){for(;a!=document.body;)if(a=a.parentNode,c(a,b))return a},d.getQueryElement=function(a){return"string"==typeof a?document.querySelector(a):a},d.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},d.filterFindElements=function(a,b){a=d.makeArray(a);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f];if(d.isElement(h))if(b){c(h,b)&&e.push(h);for(var i=h.querySelectorAll(b),j=0,k=i.length;k>j;j++)e.push(i[j])}else e.push(h)}return e},d.debounceMethod=function(a,b,c){var d=a.prototype[b],e=b+"Timeout";a.prototype[b]=function(){var a=this[e];a&&clearTimeout(a);var b=arguments,f=this;this[e]=setTimeout(function(){d.apply(f,b),delete f[e]},c||100)}},d.toDashed=function(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()};var f=a.console;return d.htmlInit=function(c,e){b(function(){for(var b=d.toDashed(e),g=document.querySelectorAll(".js-"+b),h="data-"+b+"-options",i=0,j=g.length;j>i;i++){var k,l=g[i],m=l.getAttribute(h);try{k=m&&JSON.parse(m)}catch(n){f&&f.error("Error parsing "+h+" on "+l.nodeName.toLowerCase()+(l.id?"#"+l.id:"")+": "+n);continue}var o=new c(l,k),p=a.jQuery;p&&p.data(l,e,o)}})},d}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property","fizzy-ui-utils/utils"],function(c,d,e,f){return b(a,c,d,e,f)}):"object"==typeof exports?module.exports=b(a,require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property"),require("fizzy-ui-utils")):(a.Outlayer={}
912,a.Outlayer.Item=b(a,a.EventEmitter,a.getSize,a.getStyleProperty,a.fizzyUIUtils))}(window,function(a,b,c,d,e){"use strict";function f(a){for(var b in a)return!1;return b=null,!0}function g(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}function h(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}var i=a.getComputedStyle,j=i?function(a){return i(a,null)}:function(a){return a.currentStyle},k=d("transition"),l=d("transform"),m=k&&l,n=!!d("perspective"),o={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[k],p=["transform","transition","transitionDuration","transitionProperty"],q=function(){for(var a={},b=0,c=p.length;c>b;b++){var e=p[b],f=d(e);f&&f!==e&&(a[e]=f)}return a}();e.extend(g.prototype,b.prototype),g.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.getSize=function(){this.size=c(this.element)},g.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=q[c]||c;b[d]=a[c]}},g.prototype.getPosition=function(){var a=j(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=a[c?"left":"right"],f=a[d?"top":"bottom"],g=this.layout.size,h=-1!=e.indexOf("%")?parseFloat(e)/100*g.width:parseInt(e,10),i=-1!=f.indexOf("%")?parseFloat(f)/100*g.height:parseInt(f,10);h=isNaN(h)?0:h,i=isNaN(i)?0:i,h-=c?g.paddingLeft:g.paddingRight,i-=d?g.paddingTop:g.paddingBottom,this.position.x=h,this.position.y=i},g.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={},d=b.isOriginLeft?"paddingLeft":"paddingRight",e=b.isOriginLeft?"left":"right",f=b.isOriginLeft?"right":"left",g=this.position.x+a[d];c[e]=this.getXValue(g),c[f]="";var h=b.isOriginTop?"paddingTop":"paddingBottom",i=b.isOriginTop?"top":"bottom",j=b.isOriginTop?"bottom":"top",k=this.position.y+a[h];c[i]=this.getYValue(k),c[j]="",this.css(c),this.emitEvent("layout",[this])},g.prototype.getXValue=function(a){var b=this.layout.options;return b.percentPosition&&!b.isHorizontal?a/this.layout.size.width*100+"%":a+"px"},g.prototype.getYValue=function(a){var b=this.layout.options;return b.percentPosition&&b.isHorizontal?a/this.layout.size.height*100+"%":a+"px"},g.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={};j.transform=this.getTranslate(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},g.prototype.getTranslate=function(a,b){var c=this.layout.options;return a=c.isOriginLeft?a:-a,b=c.isOriginTop?b:-b,n?"translate3d("+a+"px, "+b+"px, 0)":"translate("+a+"px, "+b+"px)"},g.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},g.prototype.moveTo=m?g.prototype._transitionTo:g.prototype.goTo,g.prototype.setPosition=function(a,b){this.position.x=parseFloat(a),this.position.y=parseFloat(b)},g.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},g.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var r="opacity,"+h(q.transform||"transform");g.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:r,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(o,this,!1))},g.prototype.transition=g.prototype[k?"_transition":"_nonTransition"],g.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},g.prototype.onotransitionend=function(a){this.ontransitionend(a)};var s={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};
912g.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,c=s[a.propertyName]||a.propertyName;if(delete b.ingProperties[c],f(b.ingProperties)&&this.disableTransition(),c in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[c]),c in b.onEnd){var d=b.onEnd[c];d.call(this),delete b.onEnd[c]}this.emitEvent("transitionEnd",[this])}},g.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(o,this,!1),this.isTransitioning=!1},g.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var t={transitionProperty:"",transitionDuration:""};return g.prototype.removeTransitionStyles=function(){this.css(t)},g.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},g.prototype.remove=function(){if(!k||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.once("transitionEnd",function(){a.removeElem()}),this.hide()},g.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("visibleStyle");b[c]=this.onRevealTransitionEnd,this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},g.prototype.getHideRevealTransitionEndProperty=function(a){var b=this.layout.options[a];if(b.opacity)return"opacity";for(var c in b)return c},g.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options,b={},c=this.getHideRevealTransitionEndProperty("hiddenStyle");b[c]=this.onHideTransitionEnd,this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:b})},g.prototype.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},g.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},g}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","eventEmitter/EventEmitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(c,d,e,f,g){return b(a,c,d,e,f,g)}):"object"==typeof exports?module.exports=b(a,require("eventie"),require("wolfy87-eventemitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):a.Outlayer=b(a,a.eventie,a.EventEmitter,a.getSize,a.fizzyUIUtils,a.Outlayer.Item)}(window,function(a,b,c,d,e,f){"use strict";function g(a,b){var c=e.getQueryElement(a);if(!c)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(c||a)));this.element=c,i&&(this.$element=i(this.element)),this.options=e.extend({},this.constructor.defaults),this.option(b);var d=++k;this.element.outlayerGUID=d,l[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var h=a.console,i=a.jQuery,j=function(){},k=0,l={};return g.namespace="outlayer",g.Item=f,g.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},e.extend(g.prototype,c.prototype),g.prototype.option=function(a){e.extend(this.options,a)},g.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),e.extend(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},g.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},g.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},g.prototype._filterFindItemElements=function(a){return e.filterFindElements(a,this.options.itemSelector)},g.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},g.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},g.prototype._init=g.prototype.layout,g.prototype._resetLayout=function(){this.get
912Size()},g.prototype.getSize=function(){this.size=d(this.element)},g.prototype._getMeasurement=function(a,b){var c,f=this.options[a];f?("string"==typeof f?c=this.element.querySelector(f):e.isElement(f)&&(c=f),this[a]=c?d(c)[b]:f):this[a]=0},g.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},g.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},g.prototype._layoutItems=function(a,b){if(this._emitCompleteOnItems("layout",a),a&&a.length){for(var c=[],d=0,e=a.length;e>d;d++){var f=a[d],g=this._getItemLayoutPosition(f);g.item=f,g.isInstant=b||f.isLayoutInstant,c.push(g)}this._processLayoutQueue(c)}},g.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},g.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},g.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},g.prototype._postLayout=function(){this.resizeContainer()},g.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},g.prototype._getContainerSize=j,g.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},g.prototype._emitCompleteOnItems=function(a,b){function c(){e.dispatchEvent(a+"Complete",null,[b])}function d(){g++,g===f&&c()}var e=this,f=b.length;if(!b||!f)return void c();for(var g=0,h=0,i=b.length;i>h;h++){var j=b[h];j.once(a,d)}},g.prototype.dispatchEvent=function(a,b,c){var d=b?[b].concat(c):c;if(this.emitEvent(a,d),i)if(this.$element=this.$element||i(this.element),b){var e=i.Event(b);e.type=a,this.$element.trigger(e,c)}else this.$element.trigger(a,c)},g.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},g.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},g.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},g.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e.removeFrom(this.stamps,d),this.unignore(d)}},g.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=e.makeArray(a)):void 0},g.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},g.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},g.prototype._manageStamp=j,g.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,e=d(a),f={left:b.left-c.left-e.marginLeft,top:b.top-c.top-e.marginTop,right:c.right-b.right-e.marginRight,bottom:c.bottom-b.bottom-e.marginBottom};return f},g.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},g.prototype.bindResize=function(){this.isResizeBound||(b.bind(a,"resize",this),this.isResizeBound=!0)},g.prototype.unbindResize=function(){this.isResizeBound&&b.unbind(a,"resize",this),this.isResizeBound=!1},g.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},g.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},g.prototype.needsResizeLayout=function(){var a=d(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},g.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},g.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},g.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},g.prototype.reveal=function(a){this._emitCompleteOnItems("reveal",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.reveal()}},g.prototype.hide=function(a){this._emitCompleteOnItems("hide",a);for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.hide()}},g.prototype.revealItemElements=function(a){var b=this.getItems(a);this.reveal(b)},g.prototype.hideItemElements=function(a){var b=this.getItems(a);this.hide(b)},g.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},g.prototype.getItems=function(a){a=e.makeArray(a);for(var b=[],c=0,d=a.length;d>c;c++){var f=a[c],g=this.getItem(f);g&&b.push(g)}return b},g.prototype.remove=function(a){var b=this.getItems(a);if(this._emitCompleteOnItems("remove",b),b&&b.length)for(var c=0,d=b.length;d>c;c++){var f=b[c];f.remove(),e.removeFrom(this.items,f)}},g.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize();var e=this.element.outlayerGUID;delete l[e],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},g.data=function(a){a=e.getQueryElement(a);var b=a&&a.outlayerGUID;return b&&l[b]}
912,g.create=function(a,b){function c(){g.apply(this,arguments)}return Object.create?c.prototype=Object.create(g.prototype):e.extend(c.prototype,g.prototype),c.prototype.constructor=c,c.defaults=e.extend({},g.defaults),e.extend(c.defaults,b),c.prototype.settings={},c.namespace=a,c.data=g.data,c.Item=function(){f.apply(this,arguments)},c.Item.prototype=new f,e.htmlInit(c,a),i&&i.bridget&&i.bridget(a,c),c},g.Item=f,g}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/item",["outlayer/outlayer"],b):"object"==typeof exports?module.exports=b(require("outlayer")):(a.ThegemIsotope=a.ThegemIsotope||{},a.ThegemIsotope.Item=b(a.Outlayer))}(window,function(a){"use strict";function b(){a.Item.apply(this,arguments)}b.prototype=new a.Item,b.prototype._create=function(){this.id=this.layout.itemGUID++,a.Item.prototype._create.call(this),this.sortData={}},b.prototype.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var a=this.layout.options.getSortData,b=this.layout._sorters;for(var c in a){var d=b[c];this.sortData[c]=d(this.element,this)}}};var c=b.prototype.destroy;return b.prototype.destroy=function(){c.apply(this,arguments),this.css({display:""})},b}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-mode",["get-size/get-size","outlayer/outlayer"],b):"object"==typeof exports?module.exports=b(require("get-size"),require("outlayer")):(a.ThegemIsotope=a.ThegemIsotope||{},a.ThegemIsotope.LayoutMode=b(a.getSize,a.Outlayer))}(window,function(a,b){"use strict";function c(a){this.thegem_isotope=a,a&&(this.options=a.options[this.namespace],this.element=a.element,this.items=a.filteredItems,this.size=a.size)}return function(){function a(a){return function(){return b.prototype[a].apply(this.thegem_isotope,arguments)}}for(var d=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout"],e=0,f=d.length;f>e;e++){var g=d[e];c.prototype[g]=a(g)}}(),c.prototype.needsVerticalResizeLayout=function(){var b=a(this.thegem_isotope.element),c=this.thegem_isotope.size&&b;return c&&b.innerHeight!=this.thegem_isotope.size.innerHeight},c.prototype._getMeasurement=function(){this.thegem_isotope._getMeasurement.apply(this,arguments)},c.prototype.getColumnWidth=function(){this.getSegmentSize("column","Width")},c.prototype.getRowHeight=function(){this.getSegmentSize("row","Height")},c.prototype.getSegmentSize=function(a,b){var c=a+b,d="outer"+b;if(this._getMeasurement(c,d),!this[c]){var e=this.getFirstItemSize();this[c]=e&&e[d]||this.thegem_isotope.size["inner"+b]}},c.prototype.getFirstItemSize=function(){var b=this.thegem_isotope.filteredItems[0];return b&&b.element&&a(b.element)},c.prototype.layout=function(){this.thegem_isotope.layout.apply(this.thegem_isotope,arguments)},c.prototype.getSize=function(){this.thegem_isotope.getSize(),this.size=this.thegem_isotope.size},c.modes={},c.create=function(a,b){function d(){c.apply(this,arguments)}return d.prototype=new c,b&&(d.options=b),d.prototype.namespace=a,c.modes[a]=d,d},c}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("masonry/masonry",["outlayer/outlayer","get-size/get-size","fizzy-ui-utils/utils"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size"),require("fizzy-ui-utils")):a.Masonry=b(a.Outlayer,a.getSize,a.fizzyUIUtils)}(window,function(a,b,c){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}var d=this.columnWidth+=this.gutter,e=this.containerWidth+this.gutter,f=e/d,g=d-e%d,h=g&&1>g?"round":"floor";f=Math[h](f),this.cols=Math.max(f,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);
912this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c.indexOf(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-modes/masonry",["../layout-mode","masonry/masonry"],b):"object"==typeof exports?module.exports=b(require("../layout-mode"),require("masonry-layout")):b(
912a.ThegemIsotope.LayoutMode,a.Masonry)}(window,function(a,b){"use strict";function c(a,b){for(var c in b)a[c]=b[c];return a}var d=a.create("masonry"),e=d.prototype._getElementOffset,f=d.prototype.layout,g=d.prototype._getMeasurement;
913c(d.prototype,b.prototype),d.prototype._getElementOffset=e,d.prototype.layout=f,d.prototype._getMeasurement=g;var h=d.prototype.measureColumns;d.prototype.measureColumns=function(){this.items=this.thegem_isotope.filteredItems,h.call(this)};var i=d.prototype._manageStamp;return d.prototype._manageStamp=function(){this.options.isOriginLeft=this.thegem_isotope.options.isOriginLeft,this.options.isOriginTop=this.thegem_isotope.options.isOriginTop,i.apply(this,arguments)},d}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-modes/fit-rows",["../layout-mode"],b):"object"==typeof exports?module.exports=b(require("../layout-mode")):b(a.ThegemIsotope.LayoutMode)}(window,function(a){"use strict";var b=a.create("fitRows");return b.prototype._resetLayout=function(){this.x=0,this.y=0,this.maxY=0,this._getMeasurement("gutter","outerWidth")},b.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth+this.gutter,c=this.thegem_isotope.size.innerWidth+this.gutter;0!==this.x&&b+this.x>c&&(this.x=0,this.y=this.maxY);var d={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+a.size.outerHeight),this.x+=b,d},b.prototype._getContainerSize=function(){return{height:this.maxY}},b}),function(a,b){"use strict";"function"==typeof define&&define.amd?define("isotope/js/layout-modes/vertical",["../layout-mode"],b):"object"==typeof exports?module.exports=b(require("../layout-mode")):b(a.ThegemIsotope.LayoutMode)}(window,function(a){"use strict";var b=a.create("vertical",{horizontalAlignment:0});return b.prototype._resetLayout=function(){this.y=0},b.prototype._getItemLayoutPosition=function(a){a.getSize();var b=(this.thegem_isotope.size.innerWidth-a.size.outerWidth)*this.options.horizontalAlignment,c=this.y;return this.y+=a.size.outerHeight,{x:b,y:c}},b.prototype._getContainerSize=function(){return{height:this.y}},b}),function(a,b){"use strict";"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","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(c,d,e,f,g,h){return b(a,c,d,e,f,g,h)}):"object"==typeof exports?module.exports=b(a,require("outlayer"),require("get-size"),require("desandro-matches-selector"),require("fizzy-ui-utils"),require("./item"),require("./layout-mode"),require("./layout-modes/masonry"),require("./layout-modes/fit-rows"),require("./layout-modes/vertical")):a.ThegemIsotope=b(a,a.Outlayer,a.getSize,a.matchesSelector,a.fizzyUIUtils,a.ThegemIsotope.Item,a.ThegemIsotope.LayoutMode)}(window,function(a,b,c,d,e,f,g){function h(a,b){return function(c,d){for(var e=0,f=a.length;f>e;e++){var g=a[e],h=c.sortData[g],i=d.sortData[g];if(h>i||i>h){var j=void 0!==b[g]?b[g]:b,k=j?1:-1;return(h>i?1:-1)*k}}return 0}}var i=a.jQuery,j=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^\s+|\s+$/g,"")},k=document.documentElement,l=k.textContent?function(a){return a.textContent}:function(a){return a.innerText},m=b.create("thegem_isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});m.Item=f,m.LayoutMode=g,m.prototype._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),b.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var a in g.modes)this._initLayoutMode(a)},m.prototype.reloadItems=function(){this.itemGUID=0,b.prototype.reloadItems.call(this)},m.prototype._itemize=function(){for(var a=b.prototype._itemize.apply(this,arguments),c=0,d=a.length;d>c;c++){var e=a[c];e.id=this.itemGUID++}return this._updateItemsSortData(a),a},m.prototype._initLayoutMode=function(a){var b=g.modes[a],c=this.options[a]||{};
913this.options[a]=b.options?e.extend(b.options,c):c,this.modes[a]=new b(this)},m.prototype.layout=function(){return!this._isLayoutInited&&this.options.isInitLayout?void this.arrange():void this._layout()},m.prototype._layout=function(){var a=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,a),this._isLayoutInited=!0},m.prototype.arrange=function(a){function b(){d.reveal(c.needReveal),d.hide(c.needHide)}this.option(a),this._getIsInstant();var c=this._filter(this.items);this.filteredItems=c.matches;var d=this;this._bindArrangeComplete(),this._isInstant?this._noTransition(b):b(),this._sort(),this._layout()},m.prototype._init=m.prototype.arrange,m.prototype._getIsInstant=function(){var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;return this._isInstant=a,a},m.prototype._bindArrangeComplete=function(){function a(){b&&c&&d&&e.dispatchEvent("arrangeComplete",null,[e.filteredItems])}var b,c,d,e=this;this.once("layoutComplete",function(){b=!0,a()}),this.once("hideComplete",function(){c=!0,a()}),this.once("revealComplete",function(){d=!0,a()})},m.prototype._filter=function(a){var b=this.options.filter;b=b||"*";for(var c=[],d=[],e=[],f=this._getFilterTest(b),g=0,h=a.length;h>g;g++){var i=a[g];if(!i.isIgnored){var j=f(i);j&&c.push(i),j&&i.isHidden?d.push(i):j||i.isHidden||e.push(i)}}return{matches:c,needReveal:d,needHide:e}},m.prototype._getFilterTest=function(a){return i&&this.options.isJQueryFiltering?function(b){return i(b.element).is(a)}:"function"==typeof a?function(b){return a(b.element)}:function(b){return d(b.element,a)}},m.prototype.updateSortData=function(a){var b;a?(a=e.makeArray(a),b=this.getItems(a)):b=this.items,this._getSorters(),this._updateItemsSortData(b)},m.prototype._getSorters=function(){var a=this.options.getSortData;for(var b in a){var c=a[b];this._sorters[b]=n(c)}},m.prototype._updateItemsSortData=function(a){for(var b=a&&a.length,c=0;b&&b>c;c++){var d=a[c];d.updateSortData()}};var n=function(){function a(a){if("string"!=typeof a)return a;var c=j(a).split(" "),d=c[0],e=d.match(/^\[(.+)\]$/),f=e&&e[1],g=b(f,d),h=m.sortDataParsers[c[1]];return a=h?function(a){return a&&h(g(a))}:function(a){return a&&g(a)}}function b(a,b){var c;return c=a?function(b){return b.getAttribute(a)}:function(a){var c=a.querySelector(b);return c&&l(c)}}return a}();m.sortDataParsers={parseInt:function(a){return parseInt(a,10)},parseFloat:function(a){return parseFloat(a)}},m.prototype._sort=function(){var a=this.options.sortBy;if(a){var b=[].concat.apply(a,this.sortHistory),c=h(b,this.options.sortAscending);this.filteredItems.sort(c),a!=this.sortHistory[0]&&this.sortHistory.unshift(a)}},m.prototype._mode=function(){var a=this.options.layoutMode,b=this.modes[a];if(!b)throw new Error("No layout mode: "+a);return b.options=this.options[a],b},m.prototype._resetLayout=function(){b.prototype._resetLayout.call(this),this._mode()._resetLayout()},m.prototype._getItemLayoutPosition=function(a){return this._mode()._getItemLayoutPosition(a)},m.prototype._manageStamp=function(a){this._mode()._manageStamp(a)},m.prototype._getContainerSize=function(){return this._mode()._getContainerSize()},m.prototype.needsResizeLayout=function(){return this._mode().needsResizeLayout()},m.prototype.appended=function(a){var b=this.addItems(a);if(b.length){var c=this._filterRevealAdded(b);this.filteredItems=this.filteredItems.concat(c)}},m.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){this._resetLayout(),this._manageStamps();var c=this._filterRevealAdded(b);this.layoutItems(this.filteredItems),this.filteredItems=c.concat(this.filteredItems),this.items=b.concat(this.items)}},m.prototype._filterRevealAdded=function(a){var b=this._filter(a);return this.hide(b.needHide),this.reveal(b.matches),this.layoutItems(b.matches,!0),b.matches},m.prototype.insert=function(a){var b=this.addItems(a);if(b.length){var c,d,e=b.length;for(c=0;e>c;c++)d=b[c],this.element.appendChild(d.element);var f=this._filter(b).matches;for(c=0;e>c;c++)b[c].isLayoutInstant=!0;for(this.arrange(),c=0;e>c;c++)delete b[c].isLayoutInstant;this.reveal(f)}};var o=m.prototype.remove;return m.prototype.remove=function(a){a=e.makeArray(a);var b=this.getItems(a);o.call(this,a);var c=b&&b.length;if(c)for(var d=0;c>d;d++){var f=b[d];e.removeFrom(this.filteredItems,f)}},m.prototype.shuffle=function(){for(var a=0,b=this.items.length;b>a;a++){var c=this.items[a];c.sortData.random=Math.random()}this.options.sortBy="random",this._sort(),this._layout()},m.prototype._noTransition=function(a){var b=this.options.transitionDuration;this.options.transitionDuration=0;var c=a.call(this);return this.options.transitionDuration=b,c},m.prototype.getFilteredItemElements=function(){for(var a=[],b=0,c=this.filteredItems.length;c>b;b++)a.push(this.filteredItems[b].element);return a},m});
914;

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.