PageSourceSearch

https://www.mikk.si/wp-content,_plugins,_pojo-accessibility,_modul…==1.4.2.pagespeed.jc.PFIZR42w0O.js

js mikk.si collected 2026-10-02 06:10:59 UTC 80,903 bytes, 6 lines download raw bytes

1var mod_pagespeed_9pQfWBjdH1 = "/*! pojo-accessibility - v2.1.0 - 18-12-2022 */\n!function(){var t=-1<navigator.userAgent.toLowerCase().indexOf(\"webkit\"),e=-1<navigator.userAgent.toLowerCase().indexOf(\"opera\"),o=-1<navigator.userAgent.toLowerCase().indexOf(\"msie\");(t||e||o)&&document.getElementById&&window.addEventListener&&window.addEventListener(\"hashchange\",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1)}(),function(n,t,o,e){\"use strict\";var i={cache:{$document:n(o),$window:n(t)},cacheElements:function(){this.cache.$toolbar=n(\"#pojo-a11y-toolbar\"),this.cache.$toolbarLinks=this.cache.$toolbar.find(\"a.pojo-a11y-toolbar-link\"),this.cache.$toolbarToolsLinks=this.cache.$toolbar.find(\".pojo-a11y-tools a.pojo-a11y-toolbar-link\"),this.cache.$btnToolbarToggle=this.cache.$toolbar.find(\"div.pojo-a11y-toolbar-toggle > a\"),this.cache.$skipToContent=n(\"#pojo-a11y-skip-content\"),this.cache.$body=n(\"body\")},settings:{minFontSize:120,maxFontSize:200,buttonsClassPrefix:\"pojo-a11y-btn-\",bodyClassPrefix:\"pojo-a11y-\",bodyFontClassPrefix:\"pojo-a11y-resize-font-\",storageKey:\"pojo-a11y\",expires:PojoA11yOptions.save_expiration?36e5*PojoA11yOptions.save_expiration:432e5},variables:{currentFontSize:120,currentSchema:null},activeActions:{},buildElements:function(){this.cache.$body.prepend(this.cache.$toolbar),this.cache.$body.prepend(this.cache.$skipToContent)},bindEvents:function(){var e=this;e.cache.$btnToolbarToggle.on(\"click\",function(t){t.preventDefault(),e.cache.$toolbar.toggleClass(\"pojo-a11y-toolbar-open\"),e.cache.$toolbar.hasClass(\"pojo-a11y-toolbar-open\")?e.cache.$toolbarLinks.attr(\"tabindex\",\"0\"):e.cache.$toolbarLinks.attr(\"tabindex\",\"-1\")}),n(o).on(\"keyup\",function(t){9===t.which&&e.cache.$btnToolbarToggle.is(\":focus\")&&(e.cache.$toolbar.addClass(\"pojo-a11y-toolbar-open\"),e.cache.$toolbarLinks.attr(\"tabindex\",\"0\"))}),e.bindToolbarButtons()},bindToolbarButtons:function(){var s=this;s.cache.$toolbarToolsLinks.on(\"click\",function(t){t.preventDefault();var e=n(this),o=e.data(\"action\"),i=e.data(\"action-group\"),a=!1;\"reset\"!==o?(-1!==[\"toggle\",\"schema\"].indexOf(i)&&(a=e.hasClass(\"active\")),s.activateButton(o,a)):s.reset()})},activateButton:function(t,e){var o=this.getButtonByAction(t).data(\"action-group\");this.activeActions[t]=!e,this.actions[o].call(this,t,e),this.saveToLocalStorage()},getActiveButtons:function(){return this.cache.$toolbarToolsLinks.filter(\".active\")},getButtonByAction:function(t){return this.cache.$toolbarToolsLinks.filter(\".\"+this.settings.buttonsClassPrefix+t)},actions:{toggle:function(t,e){var o=this.getButtonByAction(t),i=e?\"removeClass\":\"addClass\";e?o.removeClass(\"active\"):o.addClass(\"active\"),this.cache.$body[i](this.settings.bodyClassPrefix+t)},resize:function(t,e){var o=this.variables.currentFontSize;\"resize-plus\"===t&&this.settings.maxFontSize>o&&(this.variables.currentFontSize+=10),\"resize-minus\"===t&&this.settings.minFontSize<o&&(this.variables.currentFontSize-=10),e&&(this.variables.currentFontSize=this.settings.minFontSize),this.cache.$body.removeClass(this.settings.bodyFontClassPrefix+o);var i=120<this.variables.currentFontSize,a=i?\"addClass\":\"removeClass\";this.getButtonByAction(\"resize-plus\")[a](\"active\"),i&&this.cache.$body.addClass(this.settings.bodyFontClassPrefix+this.variables.currentFontSize),this.activeActions[\"resize-minus\"]=!1,this.activeActions[\"resize-plus\"]=i,this.cache.$window.trigger(\"resize\")},schema:function(t,e){var o=this.variables.currentSchema;o&&(this.cache.$body.removeClass(this.settings.bodyClassPrefix+o),this.getButtonByAction(o).removeClass(\"active\"),this.activeActions[o]=!1,this.saveToLocalStorage()),e?this.variables.currentSchema=null:(o=this.variables.currentSchema=t,this.cache.$body.addClass(this.settings.bodyClassPrefix+o),this.getButtonByAction(o).addClass(\"active\"))}},reset:function(){for(var t in this.activeActions)this.activeActions.hasOwnProperty(t)&&this.activeActions[t]&&this.activateButton(t,!0);localStorage.removeItem(this.settings.storageKey)},saveToLocalStorage:function(){if(\"1\"===PojoA11yOptions.enable_save){this.variables.expires||(this.variables.expires=(new Date).getTime()+this.settings.expires);var t={actions:this.activeActions,variables:{currentFontSize:this.variables.currentFontSize,expires:this.variables.expires}};localStorage.setItem(this.settings.storageKey,JSON.stringify(t))}},setFromLocalStorage:function(){if(\"1\"===PojoA11yOptions.enable_save){var t=JSON.parse(localStorage.getItem(this.settings.storageKey));if(t){var e=new Date;if(t.variables.expires<e)localStorage.removeItem(this.settings.storageKey);else{var o=t.actions;for(var i in 120<t.variables.currentFontSize&&(t.variables.currentFontSize-=10),n.extend(this.variables,t.variables),o)o.hasOwnProperty(i)&&o[i]&&this.activateButton(i,!1)}}}},handleGlobalOptions:function(){\"1\"===PojoA11yOptions.focusable&&this.cache.$body.addClass(\"pojo-a11y-focusable\"),\"1\"===PojoA11yOptions.remove_link_target&&n('a[target=\"_blank\"]').attr(\"target\",\"\"),\"1\"===PojoA11yOptions.add_role_links&&n(\"a\").attr(\"role\",\"link\")},init:function(){this.cacheElements(),this.buildElements(),this.bindEvents(),this.handleGlobalOptions()}};n(o).ready(function(t){i.init(),i.setFromLocalStorage()})}(jQuery,window,document);";
2var mod_pagespeed_nfhkf_6bCF = "/*! This file is auto-generated */\n!function(e){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],e):\"object\"==typeof module&&module.exports?module.exports=e(require(\"jquery\")):jQuery&&!jQuery.fn.hoverIntent&&e(jQuery)}(function(f){\"use strict\";function u(e){return\"function\"==typeof e}var i,r,v={interval:100,sensitivity:6,timeout:0},s=0,a=function(e){i=e.pageX,r=e.pageY},p=function(e,t,n,o){if(Math.sqrt((n.pX-i)*(n.pX-i)+(n.pY-r)*(n.pY-r))<o.sensitivity)return t.off(n.event,a),delete n.timeoutId,n.isActive=!0,e.pageX=i,e.pageY=r,delete n.pX,delete n.pY,o.over.apply(t[0],[e]);n.pX=i,n.pY=r,n.timeoutId=setTimeout(function(){p(e,t,n,o)},o.interval)};f.fn.hoverIntent=function(e,t,n){function o(e){var u=f.extend({},e),r=f(this),v=((t=r.data(\"hoverIntent\"))||r.data(\"hoverIntent\",t={}),t[i]),t=(v||(t[i]=v={id:i}
2),v.timeoutId&&(v.timeoutId=clearTimeout(v.timeoutId)),v.event=\"mousemove.hoverIntent.hoverIntent\"+i);\"mouseenter\"===e.type?v.isActive||(v.pX=u.pageX,v.pY=u.pageY,r.off(t,a).on(t,a),v.timeoutId=setTimeout(function(){p(u,r,v,d)},d.interval)):v.isActive&&(r.off(t,a),v.timeoutId=setTimeout(function(){var e,t,n,o,i;e=u,t=r,n=v,o=d.out,(i=t.data(\"hoverIntent\"))&&delete i[n.id],o.apply(t[0],[e])},d.timeout))}var i=s++,d=f.extend({},v);f.isPlainObject(e)?(d=f.extend(d,e),u(d.out)||(d.out=d.over)):d=u(t)?f.extend(d,{over:e,out:t,selector:n}):f.extend(d,{over:e,out:e,selector:t});return this.on({\"mouseenter.hoverIntent\":o,\"mouseleave.hoverIntent\":o},d.selector)}});";
3var mod_pagespeed_oScy17UEL3 = "/*\n * jQuery Superfish Menu Plugin - v1.7.9\n * Copyright (c) 2016 Joel Birch\n * {WPHOOT modified}\n *\n * Dual licensed under the MIT and GPL licenses:\n *	http://www.opensource.org/licenses/mit-license.php\n *	http://www.gnu.org/licenses/gpl.html\n */\n\n;(function ($, w) {\n	\"use strict\";\n\n	var methods = (function () {\n		// private properties and methods go here\n		var c = {\n				bcClass: 'sf-breadcrumb',\n				menuClass: 'sf-js-enabled',\n				anchorClass: 'sf-with-ul',\n				menuArrowClass: 'sf-arrows'\n			},\n			ios = (function () {\n				var ios = /^(?![\\w\\W]*Windows Phone)[\\w\\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);\n				if (ios) {\n					// tap anywhere on iOS to unfocus a submenu\n					$('html').css('cursor', 'pointer').on('click', $.noop);\n				}\n				return ios;\n			})(),\n			wp7 = (function () {\n				var style = document.documentElement.style;\n				return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent));\n			})(),\n			unprefixedPointerEvents = (function () {\n				return (!!w.PointerEvent);\n			})(),\n			toggleMenuClasses = function ($menu, o, add) {\n				var classes = c.menuClass,\n					method;\n				if (o.cssArrows) {\n					classes += ' ' + c.menuArrowClass;\n				}\n				method = (add) ? 'addClass' : 'removeClass';\n				$menu[method](classes);\n			},\n			setPathToCurrent = function ($menu, o) {\n				return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)\n					.addClass(o.hoverClass + ' ' + c.bcClass)\n						.filter(function () {\n							return ($(this).children(o.popUpSelector).hide().show().length);\n						}).removeClass(o.pathClass);\n			},\n			toggleAnchorClass = function ($li, add) {\n				var method = (add) ? 'addClass' : 'removeClass';
3\n				$li.children('a')[method](c.anchorClass);\n			},\n			toggleTouchAction = function ($menu) {\n				var msTouchAction = $menu.css('ms-touch-action');\n				var touchAction = $menu.css('touch-action');\n				touchAction = touchAction || msTouchAction;\n				touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y';\n				$menu.css({\n					'ms-touch-action': touchAction,\n					'touch-action': touchAction\n				});\n			},\n			getMenu = function ($el) {\n				return $el.closest('.' + c.menuClass);\n			},\n			getOptions = function ($el) {\n				return getMenu($el).data('sfOptions');\n			},\n			over = function () {\n				var $this = $(this),\n					o = getOptions($this);\n				clearTimeout(o.sfTimer);\n				$this.siblings().superfish('hide').end().superfish('show');\n			},\n			close = function (o) {\n				o.retainPath = ($.inArray(this[0], o.$path) > -1);\n				this.superfish('hide');\n\n				if (!this.parents('.' + o.hoverClass).length) {\n					o.onIdle.call(getMenu(this));\n					if (o.$path.length) {\n						$.proxy(over, o.$path)();\n					}\n				}\n			},\n			out = function () {\n				var $this = $(this),\n					o = getOptions($this);\n					clearTimeout(o.sfTimer);\n					o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay);\n			},\n			touchHandler = function (e) {\n				var $this = $(this),\n					o = getOptions($this),\n					$ul = $this.siblings(e.data.popUpSelector);\n\n				if (o.onHandleTouch.call($ul) === false) {\n					return this;\n				}\n\n				if ($ul.length > 0 && $ul.is(':hidden')) {\n					$this.one('click.superfish', false);\n					if (e.type === 'MSPointerDown' || e.type === 'pointerdown') {\n						$this.trigger('focus');\n					} else {\n						$.proxy(over, $this.parent('li'))();\n					}\n				}\n			},\n			applyHandlers = function ($menu, o) {\n				var targets = 'li:has(' + o.popUpSelector + ')';\n				if ($.fn.hoverIntent && !o.disableHI) {\n					$menu.hoverIntent(over, out, targets);\n				}\n				else {\n					$menu\n						.on('mouseenter.superfish', targets, over)\n						.on('mouseleave.superfish', targets, out);\n				}\n				var touchevent = 'MSPointerDown.superfish';\n				if (unprefixedPointerEvents) {\n					touchevent = 'pointerdown.superfish';\n				}\n				if (!ios) {\n					touchevent += ' touchend.superfish';\n				}\n				if (wp7) {\n					touchevent += ' mousedown.superfish';\n				}\n				$menu\n					.on('focusin.superfish', 'li', over)\n					.on('focusout.superfish', 'li', out)\n					.on(touchevent, 'a', o, touchHandler);\n			};\n\n		return {\n			// public methods\n			hide: function (instant) {\n				if (this.length) {\n					var $this = this,\n						o = getOptions($this);\n					if (!o) {\n						return this;\n					}\n					var not = (o.retainPath === true) ? o.$path : '',\n						$ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),\n						speed = o.speedOut;\n\n					if (instant) {\n						$ul.show();\n						speed = 0;\n					}\n					o.retainPath = false;\n\n					if (o.onBeforeHide.call($ul) === false) {\n						return this;\n					}\n\n					$ul.stop(true, true).animate(o.animationOut, speed, function () {\n						var $this = $(this);\n						o.onHide.call($this);\n					});\n				}\n				return this;\n			},\n			show: function () {\n				var o = getOptions(this);\n				if (!o) {\n					return this;\n				}\n				var $this = this.addClass(o.hoverClass),\n					$ul = $this.children(o.popUpSelector);\n\n				if (o.onBeforeShow.call($ul) === false) {\n					return this;\n				}\n\n				$ul.stop(true, true).animate(o.animation, o.speed, function () {\n					o.onShow.call($ul);\n				});\n				return this;\n			},\n			destroy: function () {\n				return this.each(function () {\n					var $this = $(this),\n						o = $this.data('sfOptions'),\n						$hasPopUp;\n					if (!o) {\n						return false;\n					}\n					$hasPopUp = $this.find(o.popUpSelector).parent('li');\n					clearTimeout(o.sfTimer);\n					toggleMenuClasses($this, o);\n					toggleAnchorClass($hasPopUp);\n					toggleTouchAction($this);\n					// remove event handlers\n					$this.off('.superfish').off('.hoverIntent');\n					// clear animation's inline display style\n					$hasPopUp.children(o.popUpSelector).attr('style', function (i, style) {\n						return style.replace(/display[^;]+;?/g, '');\n					});\n					// reset 'current' path classes\n					o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);\n					$this.find('.' + o.hoverClass).removeClass(o.hoverClass);\n					o.onDestroy.call($this);\n					$this.removeData('sfOptions');\n				});\n			},\n			init: function (op) {\n				return this.each(function () {\n					var $this = $(this);\n					if ($this.data('sfOptions')) {\n						return false;\n					}\n					var o = $.extend({}, $.fn.superfish.defaults, op),\n						$hasPopUp = $this.find(o.popUpSelector).parent('li');\n					o.$path = setPathToCurrent($this, o);\n\n					$this.data('sfOptions', o);\n\n					toggleMenuClasses($this, o, true);\n					toggleAnchorClass($hasPopUp, true);\n					toggleTouchAction($this);\n					applyHandlers($this, o);\n\n					$hasPopUp.not('.' + c.bcClass).superfish('hide', true);\n\n					o.onInit.call(this);\n				});\n			}\n		};\n	})();\n\n	$.fn.superfish = function (method, args) {\n		if (methods[method]) {\n			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n		}\n		else if (typeof method === 'object' || ! method) {\n			return methods.init.apply(this, arguments);\n		}\n		else {\n			return $.error('Method ' +  method + ' does not exist on jQuery.fn.superfish');\n		}\n	};\n\n	$.fn.superfish.defaults = {\n		popUpSelector: 'ul,.sf-mega', // within menu context\n		hoverClass: 'sfHover',\n		pathClass: 'overrideThisToUse',\n		pathLevels: 1,\n		delay: 800,\n		animation: {opacity: 'show'},\n		animationOut: {opacity: 'hide'},\n		speed: 'normal',\n		speedOut: 'fast',\n		cssArrows: true,\n		disableHI: false,\n		onInit: $.noop,\n		onBeforeShow: $.noop,\n		onShow: $.noop,\n		onBeforeHide: $.noop,\n		onHide: $.noop,\n		onIdle: $.noop,\n		onDestroy: $.noop,\n		onHandleTouch: $.noop\n	};\n\n})(jQuery, window);\n";
4var mod_pagespeed_6wyiTS2X$T = "/*! lightslider - v1.1.2 - 2015-04-14\n* {WPHOOT modified}\n* https://github.com/sachinchoolur/lightslider\n* Copyright (c) 2015 Sachin N; Licensed MIT */\n(function ($, undefined) {\n    'use strict';\n    var defaults = {\n        item: 3,\n        autoWidth: false,\n        slideMove: 1,\n        slideMargin: 10,\n        addClass: '',\n        mode: '
4slide',\n        useCSS: true,\n        cssEasing: 'ease', //'cubic-bezier(0.25, 0, 0.25, 1)',\n        easing: 'linear', //'for jquery animation',//\n        speed: 400, //ms'\n        auto: false,\n        loop: false,\n        slideEndAnimation: true,\n        pause: 2000,\n        keyPress: false,\n        controls: true,\n        prevHtml: '',\n        nextHtml: '',\n        rtl: false,\n        adaptiveHeight: false,\n        vertical: false,\n        verticalHeight: 500,\n        vThumbWidth: 100,\n        thumbItem: 10,\n        pager: true,\n        gallery: false,\n        galleryMargin: 5,\n        thumbMargin: 5,\n        currentPagerPosition: 'middle',\n        enableTouch: true,\n        enableDrag: true,\n        freeMove: true,\n        swipeThreshold: 40,\n        responsive: [],\n        /* jshint ignore:start */\n        onBeforeStart: function ($el) {},\n        onSliderLoad: function ($el) {},\n        onBeforeSlide: function ($el, scene) {},\n        onAfterSlide: function ($el, scene) {},\n        onBeforeNextSlide: function ($el, scene) {},\n        onBeforePrevSlide: function ($el, scene) {}\n        /* jshint ignore:end */\n    };\n    $.fn.lightSlider = function (options) {\n        if (this.length === 0) {\n            return this;\n        }\n\n        if (this.length > 1) {\n            this.each(function () {\n                $(this).lightSlider(options);\n            });\n            return this;\n        }\n\n        var plugin = {},\n            settings = $.extend(true, {}, defaults, options),\n            settingsTemp = {},\n            $el = this;\n        plugin.$el = this;\n\n        if (settings.mode === 'fade') {\n            settings.vertical = false;\n        }\n        var $children = $el.children(),\n            windowW = $(window).width(),\n            breakpoint = null,\n            resposiveObj = null,\n            length = 0,\n            w = 0,\n            on = false,\n            elSize = 0,\n            $slide = '',\n            scene = 0,\n            property = (settings.vertical === true) ? 'height' : 'width',\n            gutter = (settings.vertical === true) ? 'margin-bottom' : 'margin-right',\n            slideValue = 0,\n            pagerWidth = 0,\n            slideWidth = 0,\n            thumbWidth = 0,\n            interval = null,\n            isTouch = ('ontouchstart' in document.documentElement);\n        var refresh = {};\n\n        refresh.chbreakpoint = function () {\n            windowW = $(window).width();\n            if (settings.responsive.length) {\n                var item;\n                if (settings.autoWidth === false) {\n                    item = settings.item;\n                }\n                if (windowW < settings.responsive[0].breakpoint) {\n                    for (var i = 0; i < settings.responsive.length; i++) {\n                        if (windowW < settings.responsive[i].breakpoint) {\n                            breakpoint = settings.responsive[i].breakpoint;\n                            resposiveObj = settings.responsive[i];\n                        }\n                    }\n                }\n                if (typeof resposiveObj !== 'undefined' && resposiveObj !== null) {\n                    for (var j in resposiveObj.settings) {\n                        if (resposiveObj.settings.hasOwnProperty(j)) {\n                            if (typeof settingsTemp[j] === 'undefined' || settingsTemp[j] === null) {\n                                settingsTemp[j] = settings[j];\n                            }\n                            settings[j] = resposiveObj.settings[j];\n                        }\n                    }\n                }\n                if (!$.isEmptyObject(settingsTemp) && windowW > settings.responsive[0].breakpoint) {\n                    for (var k in settingsTemp) {\n                        if (settingsTemp.hasOwnProperty(k)) {\n                            settings[k] = settingsTemp[k];\n                        }\n                    }\n                }\n                if (settings.autoWidth === false) {\n                    if (slideValue > 0 && slideWidth > 0) {\n                        if (item !== settings.item) {\n                            scene = Math.round(sli
4deValue / ((slideWidth + settings.slideMargin) * settings.slideMove));\n                        }\n                    }\n                }\n            }\n        };\n\n        refresh.calSW = function () {\n            if (settings.autoWidth === false) {\n                slideWidth = (elSize - ((settings.item * (settings.slideMargin)) - settings.slideMargin)) / settings.item;\n            }\n        };\n\n        refresh.calWidth = function (cln) {\n            var ln = cln === true ? $slide.find('.lslide').length : $children.length;\n            if (settings.autoWidth === false) {\n                w = ln * (slideWidth + settings.slideMargin);\n            } else {\n                w = 0;\n                for (var i = 0; i < ln; i++) {\n                    w += (parseInt($children.eq(i).width()) + settings.slideMargin);\n                }\n            }\n            return w;\n        };\n        plugin = {\n            doCss: function () {\n                var support = function () {\n                    var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n                    var root = document.documentElement;\n                    for (var i = 0; i < transition.length; i++) {\n                        if (transition[i] in root.style) {\n                            return true;\n                        }\n                    }\n                };\n                if (settings.useCSS && support()) {\n                    return true;\n                }\n                return false;\n            },\n            keyPress: function () {\n                if (settings.keyPress) {\n                    $(document).on('keyup.lightslider', function (e) {\n                        if (!$(':focus').is('input, textarea')) {\n                            if (e.preventDefault) {\n                                e.preventDefault();\n                            } else {\n                                e.returnValue = false;\n                            }\n                            if (e.keyCode === 37) {\n                                $el.goToPrevSlide();\n                                clearInterval(interval);\n                            } else if (e.keyCode === 39) {\n                                $el.goToNextSlide();\n                                clearInterval(interval);\n                            }\n                        }\n                    });\n                }\n            },\n            controls: function () {\n                if (settings.controls) {\n                    $el.after('<div class=\"lSAction\"><a class=\"lSPrev\">' + settings.prevHtml + '</a><a class=\"lSNext\">' + settings.nextHtml + '</a></div>');\n                    if (!settings.autoWidth) {\n                        if (length <= settings.item) {\n                            $slide.find('.lSAction').hide();\n                        }\n                    } else {\n                        if (refresh.calWidth(false) < elSize) {\n                            $slide.find('.lSAction').hide();\n                        }\n                    }\n                    $slide.find('.lSAction a').on('click', function (e) {\n                        if (e.preventDefault) {\n                            e.preventDefault();\n                        } else {\n                            e.returnValue = false;\n                        }\n                        if ($(this).attr('class') === 'lSPrev') {\n                            $el.goToPrevSlide();\n                        } else {\n                            $el.goToNextSlide();\n                        }\n                        clearInterval(interval);\n                        return false;\n                    });\n                }\n            },\n            initialStyle: function () {\n                var $this = this;\n                if (settings.mode === 'fade') {\n                    settings.autoWidth = false;\n                    settings.slideEndAnimation = false;\n                }\n                if (settings.auto) {\n                    settings.slideEndAnimation = false;\n                }\n                if (settings.autoWidth) {\n                    settings.slideMove = 1;\n                    settings.item = 1;\n                }\n                if (settings.loop) {\n                    settings.slideMove = 1;\n                    settings.freeMove = false;\n                }\n                settings.onBeforeStart.call(this, $el);\n                refresh.chbreakpoint();\n                $el.addClass('lightSlider').wrap('<div class=\"lSSlideOuter ' + settings.addClass + '\"><div class=\"lSSlideWrapper\"></div></div>');\n                $slide = $el.parent('.lSSlideWrapper');\n                if (settings.rtl === true) {\n                    $slide.parent().addClass('lSrtl');\n                }\n                if (settings.vertical) {\n                    $slide.parent().addClass('vertical');\n                    elSize = settings.verticalHeight;\n                    $slide.css('height', elSize + 'px');\n                } else {\n                    elSize = $el.outerWidth();\n                }\n                $children.addClass('lslide');\n                if (settings.loop === true && settings.mode === 'slide') {\n                    refresh.calSW();\n                    refresh.clone = function () {\n                        if (refresh.calWidth(true) > elSize) {\n                            /**/\n                            var tWr = 0,\n                                tI = 0;\n                            for (var k = 0; k < $children.length; k++) {\n                                tWr += (parseInt($el.find('.lslide').eq(k).width()) + settings.slideMargin);\n                                tI++;\n                                if (tWr >= (elSize + settings.slideMargin)) {\n                                    break;\n                                }\n                            }\n                            var tItem = settings.autoWidth === true ? tI : settings.item;\n\n                            /**/\n                            if (tItem < $el.find('.clone.left').length) {\n                                for (var i = 0; i < $el.find('.clone.left').length - tItem;
4 i++) {\n                                    $children.eq(i).remove();\n                                }\n                            }\n                            if (tItem < $el.find('.clone.right').length) {\n                                for (var j = $children.length - 1; j > ($children.length - 1 - $el.find('.clone.right').length); j--) {\n                                    scene--;\n                                    $children.eq(j).remove();\n                                }\n                            }\n                            /**/\n                            for (var n = $el.find('.clone.right').length; n < tItem; n++) {\n                                $el.find('.lslide').eq(n).clone().removeClass('lslide').addClass('clone right').appendTo($el);\n                                scene++;\n                            }\n                            for (var m = $el.find('.lslide').length - $el.find('.clone.left').length; m > ($el.find('.lslide').length - tItem); m--) {\n                                $el.find('.lslide').eq(m - 1).clone().removeClass('lslide').addClass('clone left').prependTo($el);\n                            }\n                            $children = $el.children();\n                        } else {\n                            if ($children.hasClass('clone')) {\n                                $el.find('.clone').remove();\n                                $this.move($el, 0);\n                            }\n                        }\n                    };\n                    refresh.clone();\n                }\n                refresh.sSW = function () {\n                    length = $children.length;\n                    if (settings.rtl === true && settings.vertical === false) {\n                        gutter = 'margin-left';\n                    }\n                    if (settings.autoWidth === false) {\n                        $children.css(property, slideWidth + 'px');\n                    }\n                    $children.css(gutter, settings.slideMargin + 'px');\n                    w = refresh.calWidth(false);\n                    $el.css(property, w + 'px');\n                    if (settings.loop === true && settings.mode === 'slide') {\n                        if (on === false) {\n                            scene = $el.find('.clone.left').length;\n                        }\n                    }\n                };\n                refresh.calL = function () {\n                    $children = $el.children();\n                    length = $children.length;\n                };\n                if (this.doCss()) {\n                    $slide.addClass('usingCss');\n                }\n                refresh.calL();\n                if (settings.mode === 'slide') {\n                    refresh.calSW();\n                    refresh.sSW();\n                    if (settings.loop === true) {\n                        slideValue = $this.slideValue();\n                        this.move($el, slideValue);\n                    }\n                    if (settings.vertical === false) {\n                        this.setHeight($el, false);\n                    }\n\n                } else {\n                    this.setHeight($el, true);\n                    $el.addClass('lSFade');\n                    if (!this.doCss()) {\n                        $children.not('.active').css('display', 'none');\n                    }\n                }\n                if (settings.loop === true && settings.mode === 'slide') {\n                    $children.eq(scene).addClass('active');\n                } else {\n                    $children.first().addClass('active');\n                }\n            },\n            pager: function () {\n                var $this = this;\n                refresh.createPager = function () {\n                    thumbWidth = (elSize - ((settings.thumbItem * (settings.thumbMargin)) - settings.thumbMargin)) / settings.thumbItem;\n                    var $children = $slide.find('.lslide');\n                    var length = $slide.find('.lslide').length;\n                    var i = 0,\n                        pagers = '',\n                        v = 0;\n                    for (i = 0; i < length;
4 i++) {\n                        if (settings.mode === 'slide') {\n                            // calculate scene * slide value\n                            if (!settings.autoWidth) {\n                                v = i * ((slideWidth + settings.slideMargin) * settings.slideMove);\n                            } else {\n                                v += ((parseInt($children.eq(i).width()) + settings.slideMargin) * settings.slideMove);\n                            }\n                        }\n                        var thumb = $children.eq(i * settings.slideMove).attr('data-thumb');\n                        if (settings.gallery === true) {\n                            pagers += '<li style=\"width:100%;' + property + ':' + thumbWidth + 'px;' + gutter + ':' + settings.thumbMargin + 'px\"><a href=\"#\"><img src=\"' + thumb + '\" /></a></li>';\n                        } else {\n                            /* WPHOOT MOD : https://wphoot.com/support/topic/slider-and-google-search-results-page/ */\n                            pagers += '<li><a href=\"#\"></a></li>';\n                            // pagers += '<li><a href=\"#\">' + (i + 1) + '</a></li>';\n                            /* WPHOOT MOD END */\n                        }\n                        if (settings.mode === 'slide') {\n                            if ((v) >= w - elSize - settings.slideMargin) {\n                                i = i + 1;\n                                var minPgr = 2;\n                                if (settings.autoWidth) {\n                                    pagers += '<li><a href=\"#\">' + (i + 1) + '</a></li>';\n                                    minPgr = 1;\n                                }\n                                if (i < minPgr) {\n                                    pagers = null;\n                                    $slide.parent().addClass('noPager');\n                                } else {\n                                    $slide.parent().removeClass('noPager');\n                                }\n                                break;\n                            }\n                        }\n                    }\n                    var $cSouter = $slide.parent();\n                    $cSouter.find('.lSPager').html(pagers); \n                    if (settings.gallery === true) {\n                        if (settings.vertical === true) {\n                            // set Gallery thumbnail width\n                            $cSouter.find('.lSPager').css('width', settings.vThumbWidth + 'px');\n                        }\n                        pagerWidth = (i * (settings.thumbMargin + thumbWidth)) + 0.5;\n                        $cSouter.find('.lSPager').css({\n                            property: pagerWidth + 'px',\n                            'transition-duration': settings.speed + 'ms'\n                        });\n                        if (settings.vertical === true) {\n                            $slide.parent().css('padding-right', (settings.vThumbWidth + settings.galleryMargin) + 'px');\n                        }\n                        $cSouter.find('.lSPager').css(property, pagerWidth + 'px');\n                    }\n                    var $pager = $cSouter.find('.lSPager').find('li');\n                    $pager.first().addClass('active');\n                    $pager.on('click', function () {\n                        if (settings.loop === true && settings.mode === 'slide') {\n                            scene = scene + ($pager.index(this) - $cSouter.find('.lSPager').find('li.active').index());\n                        } else {\n                            scene = $pager.index(this);\n                        }\n                        $el.mode(false);\n                        if (settings.gallery === true) {\n                            $this.slideThumb();\n                        }\n                        clearInterval(interval);\n                        return false;\n                    });\n                };\n                if (settings.pager) {\n                    var cl = 'lSpg';\n                    if (settings.gallery) {\n                        cl = 'lSGallery';\n                    }\n                    $slide.after('<ul class=\"lSPager ' + cl + '\"></ul>');\n                    var gMargin = (settings.vertical) ? 'margin-left' : 'margin-top';\n                    $slide.parent().find('.lSPager').css(gMargin, settings.galleryMargin + 'px');\n                    refresh.createPager();\n                }\n\n                setTimeout(function () {\n                    refresh.init();\n                }, 0);\n            },\n            setHeight: function (ob, fade) {\n                var obj = null,\n                    $this = this;\n                if (settings.loop) {\n                    obj = ob.children('.lslide ').first();\n                } else {\n                    obj = ob.children().first();\n                }\n                var setCss = function () {\n                    var tH = obj.outerHeight(),\
4n                        tP = 0,\n                        tHT = tH;\n                    if (fade) {\n                        tH = 0;\n                        tP = ((tHT) * 100) / elSize;\n                    }\n                    ob.css({\n                        'height': tH + 'px',\n                        'padding-bottom': tP + '%'\n                    });\n                };\n                setCss();\n                /* WPHOOT MOD : Unreliable load https://api.jquery.com/load-event/ */\n                /* @credit http://stackoverflow.com/questions/3877027 */\n                if (obj.find('img').length > 0) {\n                    obj.find('img').one(\"load\",function () {\n                // if (obj.has('img')) {\n                //     obj.find('img').load(function () {\n                        setTimeout(function () {\n                            setCss();\n                            if (!interval) {\n                                $this.auto();\n                            }\n                        }, 100);\n                    }).each(function() { if(this.complete) $(this).trigger('load'); });\n                //  });\n                /* WPHOOT MOD END */\n                }
4else{\n                    if (!interval) {\n                        $this.auto();\n                    }\n                }\n            },\n            active: function (ob, t) {\n                if (this.doCss() && settings.mode === 'fade') {\n                    $slide.addClass('on');\n                }\n                var sc = 0;\n                if (scene * settings.slideMove < length) {\n                    ob.removeClass('active');\n                    if (!this.doCss() && settings.mode === 'fade' && t === false) {\n                        ob.fadeOut(settings.speed);\n                    }\n                    if (t === true) {\n                        sc = scene;\n                    } else {\n                        sc = scene * settings.slideMove;\n                    }\n                    //t === true ? sc = scene : sc = scene * settings.slideMove;\n                    var l, nl;\n                    if (t === true) {\n                        l = ob.length;\n                        nl = l - 1;\n                        if (sc + 1 >= l) {\n                            sc = nl;\n                        }\n                    }\n                    if (settings.loop === true && settings.mode === 'slide') {\n                        //t === true ? sc = scene - $el.find('.clone.left').length : sc = scene * settings.slideMove;\n                        if (t === true) {\n                            sc = scene - $el.find('.clone.left').length;\n                        } else {\n                            sc = scene * settings.slideMove;\n                        }\n                        if (t === true) {\n                            l = ob.length;\n                            nl = l - 1;\n                            if (sc + 1 === l) {\n                                sc = nl;\n                            } else if (sc + 1 > l) {\n                                sc = 0;\n                            }\n                        }\n                    }\n\n                    if (!this.doCss() && settings.mode === 'fade' && t === false) {\n                        ob.eq(sc).fadeIn(settings.speed);\n                    }\n                    ob.eq(sc).addClass('active');\n                } else {\n                    ob.removeClass('active');\n                    ob.eq(ob.length - 1).addClass('active');\n                    if (!this.doCss() && settings.mode === 'fade' && t === false) {\n                        ob.fadeOut(settings.speed);\n                        ob.eq(sc).fadeIn(settings.speed);\n                    }\n                }\n            },\n            move: function (ob, v) {\n                if (settings.rtl === true) {\n                    v = -v;\n                }\n                if (this.doCss()) {\n                    if (settings.vertical === true) {\n                        ob.css({\n                            'transform': 'translate3d(0px, ' + (-v) + 'px, 0px)',\n                            '-webkit-transform': 'translate3d(0px, ' + (-v) + 'px, 0px)'\n                        });\n                    } else {\n                        ob.css({\n                            'transform': 'translate3d(' + (-v) + 'px, 0px, 0px)',\n                            '-webkit-transform': 'translate3d(' + (-v) + 'px, 0px, 0px)',\n                        });\n                    }\n                } else {\n                    if (settings.vertical === true) {\n                        ob.css('position', 'relative').animate({\n                            top: -v + 'px'\n                        }, settings.speed, settings.easing);\n                    } else {\n                        ob.css('position', 'relative').animate({\n                            left: -v + 'px'\n                        }, settings.speed, settings.easing);\n                    }\n                }\n                var $thumb = $slide.parent().find('.lSPager').find('li');\n                this.active($thumb, true);\n                /* WPHOOT MOD */\n                // We use setInterval instead of setTimeout(function(){$(window).trigger('hootSliderAnimated');},400);\n                var triggerCount = 1, triggerEvent = setInterval(function(){\n                    $(window).trigger('hootSliderAnimated');\n                    triggerCount++;\n                    if ( triggerCount == 5 ) clearInterval(triggerEvent);\n                }, 100); // total 400ms i.e. defaults.speed set above (options)\n                /* WPHOOT MOD END */\n            },\n            fade: function () {\n                this.active($children, false);\n                var $thumb = $slide.parent().find('.lSPager').find('li');\n                this.active($thumb, true);\n            },\n            slide: function () {\n                var $this = this;\n                refresh.calSlide = function () {\n                    if (w > elSize) {\n                        slideValue = $this.slideValue();\n                        $this.active($children, false);\n                        if ((slideValue) > w - elSize - settings.slideMargin) {\n                            slideValue = w - elSize - settings.slideMargin;\n                        } else if (slideValue < 0) {\n                            slideValue = 0;\n                        }\n                        $this.move($el, slideValue);\n                        if (settings.loop === true && settings.mode === 'slide') {\n                            if (scene >
4= (length - ($el.find('.clone.left').length / settings.slideMove))) {\n                                $this.resetSlide($el.find('.clone.left').length);\n                            }\n                            if (scene === 0) {\n                                $this.resetSlide($slide.find('.lslide').length);\n                            }\n                        }\n                    }\n                };\n                refresh.calSlide();\n            },\n            resetSlide: function (s) {\n                var $this = this;\n                $slide.find('.lSAction a').addClass('disabled');\n                setTimeout(function () {\n                    scene = s;\n                    $slide.css('transition-duration', '0ms');\n                    slideValue = $this.slideValue();\n                    $this.active($children, false);\n                    plugin.move($el, slideValue);\n                    setTimeout(function () {\n                        $slide.css('transition-duration', settings.speed + 'ms');\n                        $slide.find('.lSAction a').removeClass('disabled');\n                    }, 50);\n                }, settings.speed + 100);\n            },\n            slideValue: function () {\n                var _sV = 0;\n                if (settings.autoWidth === false) {\n                    _sV = scene * ((slideWidth + settings.slideMargin) * settings.slideMove);\n                } else {\n                    _sV = 0;\n                    for (var i = 0; i < scene; i++) {\n                        _sV += (parseInt($children.eq(i).width()) + settings.slideMargin);\n                    }\n                }\n                return _sV;\n            },\n            slideThumb: function () {\n                var position;\n                switch (settings.currentPagerPosition) {\n                case 'left':\n                    position = 0;\n                    break;\n                case 'middle':\n                    position = (elSize / 2) - (thumbWidth / 2);\n                    break;\n                case 'right':\n                    position = elSize - thumbWidth;\n                }\n                var sc = scene - $el.find('.clone.left').length;\n                var $pager = $slide.parent().find('.lSPager');\n                if (settings.mode === 'slide' && settings.loop === true) {\n                    if (sc >= $pager.children().length) {\n                        sc = 0;\n                    } else if (sc < 0) {\n                        sc = $pager.children().length;\n                    }\n                }\n                var thumbSlide = sc * ((thumbWidth + settings.thumbMargin)) - (position);\n                if ((thumbSlide + elSize) > pagerWidth) {\n                    thumbSlide = pagerWidth - elSize - settings.thumbMargin;\n                }\n                if (thumbSlide < 0) {\n                    thumbSlide = 0;\n                }\n                this.move($pager, thumbSlide);\n            },\n            auto: function () {\n                if (settings.auto) {\n                    interval = setInterval(function () {\n                        $el.goToNextSlide();\n                    }, settings.pause);\n                }\n            },\n\n            touchMove: function (endCoords, startCoords) {\n                $slide.css('transition-duration', '0ms');\n                if (settings.mode === 'slide') {\n                    var distance = endCoords - startCoords;\n                    var swipeVal = slideValue - distance;\n                    if ((swipeVal) >= w - elSize - settings.slideMargin) {\n                        if (settings.freeMove === false) {\n                            swipeVal = w - elSize - settings.slideMargin;\n                        } else {\n                            var swipeValT = w - elSize - settings.slideMargin;\n                            swipeVal = swipeValT + ((swipeVal - swipeValT) / 5);\n\n                        }\n                    } else if (swipeVal < 0) {\n                        if (settings.freeMove === false) {\n                            swipeVal = 0;\n                        } else {\n                            swipeVal = swipeVal / 5;\n                        }\n                    }\n                    this.move($el, swipeVal);\n                }\n            },\n\n            touchEnd: function (distance) {\n                $slide.css('transition-duration', settings.speed + 'ms');\n                clearInterval(interval);\n                if (settings.mode === 'slide') {\n                    var mxVal = false;\n                    var _next = true;\n                    slideValue = slideValue - distance;\n                    if ((slideValue) > w - elSize - settings.slideMargin) {\n                        slideValue = w - elSize - settings.slideMargin;\n                        if (settings.autoWidth === false) {\n                            mxVal = true;\n                        }\n                    } else if (slideValue < 0) {\n                        slideValue = 0;\n                    }\n                    var gC = function (next) {\n                        var ad = 0;\n                        if (!mxVal) {\n                            if (next) {\n                                ad = 1;\n                            }\n                        }\n                        if (!settings.autoWidth) {\n                            var num = slideValue / ((slideWidth + settings.slideMargin) * 
4settings.slideMove);\n                            scene = parseInt(num) + ad;\n                            if (slideValue >= (w - elSize - settings.slideMargin)) {\n                                if (num % 1 !== 0) {\n                                    scene++;\n                                }\n                            }\n                        } else {\n                            var tW = 0;\n                            for (var i = 0; i < $children.length; i++) {\n                                tW += (parseInt($children.eq(i).width()) + settings.slideMargin);\n                                scene = i + ad;\n                                if (tW >= slideValue) {\n                                    break;\n                                }\n                            }\n                        }\n                    };\n                    if (distance >= settings.swipeThreshold) {\n                        gC(false);\n                        _next = false;\n                    } else if (distance <= -settings.swipeThreshold) {\n                        gC(true);\n                        _next = false;\n                    }\n                    $el.mode(_next);\n                    this.slideThumb();\n                } else {\n                    if (distance >= settings.swipeThreshold) {\n                        $el.goToPrevSlide();\n                    } else if (distance <= -settings.swipeThreshold) {\n                        $el.goToNextSlide();\n                    }\n                }\n            },\n\n\n\n            enableDrag: function () {\n                var $this = this;\n                if (!isTouch) {\n                    var startCoords = 0,\n                        endCoords = 0,\n                        isDraging = false;\n                    $slide.find('.lightSlider').addClass('lsGrab');\n                    $slide.on('mousedown', function (e) {\n                        if (w < elSize) {\n                            if (w !== 0) {\n                                return false;\n                            }\n                        }\n                        if ($(e.target).attr('class') !== ('lSPrev') && $(e.target).attr('class') !== ('lSNext')) {\n                            startCoords = (settings.vertical === true) ? e.pageY : e.pageX;\n                            isDraging = true;\n                            if (e.preventDefault) {\n                                e.preventDefault();\n                            } else {\n                                e.returnValue = false;\n                            }\n                            // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n                            $slide.scrollLeft += 1;\n                            $slide.scrollLeft -= 1;\n                            // *\n                            $slide.find('.lightSlider').removeClass('lsGrab').addClass('lsGrabbing');\n                            clearInterval(interval);\n                        }\n                    });\n                    $(window).on('mousemove', function (e) {\n                        if (isDraging) {\n                            endCoords = (settings.vertical === true) ? e.pageY : e.pageX;\n                            $this.touchMove(endCoords, startCoords);\n                        }\n                    });\n                    $(window).on('mouseup', function (e) {\n                        if (isDraging) {\n                            $slide.find('.lightSlider').removeClass('lsGrabbing').addClass('lsGrab');\n                            isDraging = false;\n                            endCoords = (settings.vertical === true) ? e.pageY : e.pageX;\n                            var distance = endCoords - startCoords;\n                            if (Math.abs(distance) >= settings.swipeThreshold) {\n                                $(window).on('click.ls', function (e) {\n                                    if (e.preventDefault) {\n                                        e.preventDefault();\n                                    } else {\n                                        e.returnValue = false;\n                                    }\n                                    e.stopImmediatePropagation();\n                                    e.stopPropagation();\n                                    $(window).off('click.ls');\n                                });\n                            }\n\n                            $this.touchEnd(distance);\n\n                        }\n                    });\n                }\n            },\n\n\n\n\n            enableTouch: function () {\n                var $this = this;\n                if (isTouch) {\n                    var startCoords = {},\n                        endCoords = {};\n                    $slide.on('touchstart', function (e) {\n                        endCoords = e.originalEvent.targetTouches[0];\n                        startCoords.pageX = e.originalEvent.targetTouches[0].pageX;\n                        startCoords.pageY = e.originalEvent.targetTouches[0].pageY;\n                        clearInterval(interval);\n                    });\n                    $slide.on('touchmove', function (e) {\n                        if (w < elSize) {\n                            if (w !== 0) {\n                                return false;\n                            }\n                        }\n                        var orig = e.originalEvent;\n                        endCoords = orig.targetTouches[0];\n                        var xMovement = Math.abs(endCoords.pageX 
4- startCoords.pageX);\n                        var yMovement = Math.abs(endCoords.pageY - startCoords.pageY);\n                        if (settings.vertical === true) {\n                            if ((yMovement * 3) > xMovement) {\n                                e.preventDefault();\n                            }\n                            $this.touchMove(endCoords.pageY, startCoords.pageY);\n                        } else {\n                            if ((xMovement * 3) > yMovement) {\n                                e.preventDefault();\n                            }\n                            $this.touchMove(endCoords.pageX, startCoords.pageX);\n                        }\n\n                    });\n                    $slide.on('touchend', function () {\n                        if (w < elSize) {\n                            if (w !== 0) {\n                                return false;\n                            }\n                        }\n                        var distance;\n                        if (settings.vertical === true) {\n                            distance = endCoords.pageY - startCoords.pageY;\n                        } else {\n                            distance = endCoords.pageX 
4- startCoords.pageX;\n                        }\n                        $this.touchEnd(distance);\n                    });\n                }\n            },\n            build: function () {\n                var $this = this;\n                $this.initialStyle();\n                if (this.doCss()) {\n\n                    if (settings.enableTouch === true) {\n                        $this.enableTouch();\n                    }\n                    if (settings.enableDrag === true) {\n                        $this.enableDrag();\n                    }\n                }\n                $this.pager();\n                $this.controls();\n                $this.keyPress();\n            }\n        };\n        plugin.build();\n        refresh.init = function () {\n            refresh.chbreakpoint();\n            if (settings.vertical === true) {\n                if (settings.item > 1) {\n                    elSize = settings.verticalHeight;\n                } else {\n                    elSize = $children.outerHeight();\n                }\n                $slide.css('height', elSize + 'px');\n            } else {\n                elSize = $slide.outerWidth();\n            }\n            if (settings.loop === true && settings.mode === 'slide') {\n                if(length>1)/* WPHOOT MOD */\n                refresh.clone();\n            }\n            refresh.calL();\n            if (settings.mode === 'slide') {\n                $el.removeClass('lSSlide');\n            }\n            if (settings.mode === 'slide') {\n                refresh.calSW();\n                refresh.sSW();\n            }\n            setTimeout(function () {\n                if (settings.mode === 'slide') {\n                    $el.addClass('lSSlide');\n                }\n            }, 1000);\n            if (settings.pager) {\n                refresh.createPager();\n            }\n            if (settings.adaptiveHeight === true && settings.vertical === false) {\n                /* WPHOOT MOD: https://github.com/sachinchoolur/lightslider/issues/119 */\n                // $el.css('height', $children.eq(scene).outerHeight(true));\n                var adHeight = 0;\n                for (var i = 0; i < settings.item; i++) {\n                    // check tallest slide in the viewport \n                    if ($children.eq(scene+i).outerHeight(true) > adHeight) {\n                        adHeight = $children.eq(scene+i).outerHeight(true)\n                    };\n                };\n                $el.css('height', adHeight);\n                /* WPHOOT MOD END */\n            }\n            if (settings.adaptiveHeight === false) {\n                if (settings.mode === 'slide') {\n                    if (settings.vertical === false) {\n                        plugin.setHeight($el, false);\n                    }\n                } else {\n                    plugin.setHeight($el, true);\n                }\n            }\n            if (settings.gallery === true) {\n                plugin.slideThumb();\n            }\n            if (settings.mode === 'slide') {\n                plugin.slide();\n            }\n            if (settings.autoWidth === false) {\n                if ($children.length <= settings.item) {\n                    $slide.find('.lSAction').hide();\n                } else {\n                    $slide.find('.lSAction').show();\n                }\n            } else {\n                if ((refresh.calWidth(false) < elSize) && (w !== 0)) {\n                    $slide.find('.lSAction').hide();\n                } else {\n                    $slide.find('.lSAction').show();\n                }\n            }\n        };\n        $el.goToPrevSlide = function () {\n            if (scene > 0) {\n                settings.onBeforePrevSlide.call(this, $el, scene);\n                scene--;\n                $el.mode(false);\n                if (settings.gallery === true) {\n                    plugin.slideThumb();\n                }\n            } else {\n                if (settings.loop === true) {\n                    settings.onBeforePrevSlide.call(this, $el, scene);\n                    if (settings.mode === 'fade') {\n                        var l = (length - 1);\n                        scene = parseInt(l / settings.slideMove);\n                    }\n                    $el.mode(false);\n                    if (settings.gallery === true) {\n                        plugin.slideThumb();\n                    }\n                } else if (settings.slideEndAnimation === true) {\n                    $el.addClass('leftEnd');\n                    setTimeout(function () {\n                        $el.removeClass('leftEnd');\n                    }, 400);\n                }\n            }\n        };\n        $el.goToNextSlide = function () {\n            var nextI = true;\n            if (settings.mode === 'slide') {\n                var _slideValue = plugin.slideValue();\n                nextI = _slideValue < w - elSize - settings.slideMargin;\n            }\n            if (((scene * settings.slideMove) < length - settings.slideMove) && nextI) {\n                settings.onBeforeNextSlide.call(this, $el, scene);\n                scene++;\n                $el.mode(false);\n                if (settings.gallery === true) {\n                    plugin.slideThumb();\n                }\n            } else {\n                if (settings.loop === true) {\n                    settings.onBeforeNextSlide.call(this, $el, scene);\n                    scene = 0;\n                    $el.mode(false);\n                    if (settings.gallery === true) {\n                        plugin.slideThumb();\n                    }\n                } else if (settings.slideEndAnimation === true) {\n                    $el.addClass('rightEnd');\n                    setTimeout(function () {\n                        $el.removeClass('rightEnd');\n                    }, 400);\n                }\n            }\n        };\n        $el.mode = function (_touch) {\n            if (settings.adaptiveHeight === true && settings.vertical === false) {\n                /* WPHOOT MOD: https://github.com/sachinchoolur/lightslider/issues/119 */\n                // $el.css('height', $children.eq(scene).outerHeight(true));\n                var adHeight = 0;\n                for (var i = 0; i < settings.item;
4 i++) {\n                    // check tallest slide in the viewport \n                    if ($children.eq(scene+i).outerHeight(true) > adHeight) {\n                        adHeight = $children.eq(scene+i).outerHeight(true)\n                    };\n                };\n                $el.css('height', adHeight);\n                /* WPHOOT MOD END */\n            }\n            if (on === false) {\n                if (settings.mode === 'slide') {\n                    if (plugin.doCss()) {\n                        $el.addClass('lSSlide');\n                        if (settings.speed !== '') {\n                            $slide.css('transition-duration', settings.speed + 'ms');\n                        }\n                        if (settings.cssEasing !== '') {\n                            $slide.css('transition-timing-function', settings.cssEasing);\n                        }\n                    }\n                } else {\n                    if (plugin.doCss()) {\n                        if (settings.speed !== '') {\n                            $el.css('transition-duration', settings.speed + 'ms');\n                        }\n                        if (settings.cssEasing !== '') {\n                            $el.css('transition-timing-function', settings.cssEasing);\n                        }\n                    }\n                }\n            }\n            if (!_touch) {\n                settings.onBeforeSlide.call(this, $el, scene);\n            }\n            if (settings.mode === 'slide') {\n                plugin.slide();\n            } else {\n                plugin.fade();\n            }\n            setTimeout(function () {\n                if (!_touch) {\n                    settings.onAfterSlide.call(this, $el, scene);\n                }\n            }, settings.speed);\n            on = true;\n        };\n        $el.play = function () {\n            clearInterval(interval);\n            $el.goToNextSlide();\n            interval = setInterval(function () {\n                $el.goToNextSlide();\n            }, settings.pause);\n        };\n        $el.pause = function () {\n            clearInterval(interval);\n        };\n        $el.refresh = function () {\n            refresh.init();\n        };\n        $el.getCurrentSlideCount = function () {\n            var sc = scene;\n            if (settings.loop) {\n                var ln = $slide.find('.lslide').length,\n                    cl = $el.find('.clone.left').length;\n                if (scene <= cl - 1) {\n                    sc = ln + (scene - cl);\n                } else if (scene >= (ln + cl)) {\n                    sc = scene - ln - cl;\n                } else {\n                    sc = scene - cl;\n                }\n            }\n            return sc + 1;\n        };\n        $el.getTotalSlideCount = function () {\n            return $slide.find('.lslide').length;\n        };\n        $el.goToSlide = function (s) {\n            if (settings.loop) {\n                scene = (s + $el.find('.clone.left').length - 1);\n            } else {\n                scene = s;\n            }\n            $el.mode(false);\n            if (settings.gallery === true) {\n                plugin.slideThumb();\n            }\n        };\n        setTimeout(function () {\n            settings.onSliderLoad.call(this, $el);\n        }, 10);\n        $(window).on('resize orientationchange', function (e) {\n            setTimeout(function () {\n                if (e.preventDefault) {\n                    e.preventDefault();\n                } else {\n                    e.returnValue = false;\n                }\n                refresh.init();\n                $(window).trigger('hootSliderAnimated'); // WPHOOT MOD\n            }, 200);\n        });\n        return this;\n    };\n}(jQuery));";
5var mod_pagespeed_0eI3xIpqCg = "/*global jQuery */\n/*jshint browser:true */\n/*!\n* FitVids 1.1\n*\n* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com\n* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/\n* Released under the WTFPL license - http://sam.zoy.org/wtfpl/\n*\n*/\n\n;(function( $ ){\n\n  'use strict';\n\n  $.fn.fitVids = function( options ) {\n    var settings = {\n      customSelector: null,\n      ignore: null\n    };\n\n    if(!document.getElementById('fit-vids-style')) {\n      // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js\n      var head = document.head || document.getElementsByTagName('head')[0];\n      var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';\n      var div = document.createElement(\"div\");\n      div.innerHTML = '<p>
5x</p><style id=\"fit-vids-style\">' + css + '</style>';\n      head.appendChild(div.childNodes[1]);\n    }\n\n    if ( options ) {\n      $.extend( settings, options );\n    }\n\n    return this.each(function(){\n      var selectors = [\n        'iframe[src*=\"player.vimeo.com\"]',\n        'iframe[src*=\"youtube.com\"]',\n        'iframe[src*=\"youtube-nocookie.com\"]',\n        'iframe[src*=\"kickstarter.com\"][src*=\"video.html\"]',\n        'object',\n        'embed'\n      ];\n\n      if (settings.customSelector) {\n        selectors.push(settings.customSelector);\n      }\n\n      var ignoreList = '.fitvidsignore';\n\n      if(settings.ignore) {\n        ignoreList = ignoreList + ', ' + settings.ignore;\n      }\n\n      var $allVideos = $(this).find(selectors.join(','));\n      $allVideos = $allVideos.not('object object'); // SwfObj conflict patch\n      $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.\n\n      $allVideos.each(function(){\n        var $this = $(this);\n        if($this.parents(ignoreList).length > 0) {\n          return; // Disable FitVids on this video.\n        }\n        if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }\n        if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))\n        {\n          $this.attr('height', 9);\n          $this.attr('width', 16);\n        }\n        var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),\n            width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),\n            aspectRatio = height / width;\n        if(!$this.attr('id')){\n          var videoID = 'fitvid' + Math.floor(Math.random()*999999);\n          $this.attr('id', videoID);\n        }\n        $this.wrap('<div class=\"fluid-width-video-wrapper\"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');\n        $this.removeAttr('height').removeAttr('width');\n      });\n    });\n  };\n// Works with either jQuery or Zepto\n})( window.jQuery || window.Zepto );\n";
6var mod_pagespeed_lNkou75i6z = "/*!\n * parallax.js v1.4.2 (http://pixelcog.github.io/parallax.js/)\n * {WPHOOT modified}\n * @copyright 2016 PixelCog, Inc.\n * @license MIT (https://github.com/pixelcog/parallax.js/blob/master/LICENSE)\n */\n\n;(function ( $, window, document, undefined ) {\n\n  // Polyfill for requestAnimationFrame\n  // via: https://gist.github.com/paulirish/1579671\n\n  (function() {\n    var lastTime = 0;\n    var vendors = ['ms', 'moz', 'webkit', 'o'];\n    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n      window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];\n      window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']\n        || window[vendors[x]+'CancelRequestAnimationFrame'];\n    }\n\n    if (!window.requestAnimationFrame)\n      window.requestAnimationFrame = function(callback) {\n        var currTime = new Date().getTime();\n        var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n        var id = window.setTimeout(function() { callback(currTime + timeToCall); },\n          timeToCall);\n        lastTime = currTime + timeToCall;\n        return id;\n      };\n\n    if (!window.cancelAnimationFrame)\n      window.cancelAnimationFrame = function(id) {\n        clearTimeout(id);\n      };\n  }());\n\n\n  // Parallax Constructor\n\n  function Parallax(element, options) {\n    var self = this;\n\n    if (typeof options == 'object') {\n      delete options.refresh;\n      delete options.render;\n      $.extend(this, options);\n    }\n\n    this.$element = $(element);\n\n    if (!this.imageSrc && this.$element.is('img')) {\n      this.imageSrc = this.$element.attr('src');\n    }\n\n    var positions = (this.position + '').toLowerCase().match(/\\S+/g) || [];\n\n    if (positions.length < 1) {\n      positions.push('center');\n    }\n    if (positions.length == 1) {\n      positions.push(positions[0]);\n    }\n\n    if (positions[0] == 'top' || positions[0] == 'bottom' || positions[1] == 'left' || positions[1] == 'right') {\n      positions = [positions[1], positions[0]];\n    }\n\n    if (this.positionX != undefined) positions[0] = this.positionX.toLowerCase();\n    if (this.positionY != undefined) positions[1] = this.positionY.toLowerCase();\n\n    self.positionX = positions[0];\n    self.positionY = positions[1];\n\n    if (this.positionX != 'left' && this.positionX != 'right') {\n      if (isNaN(parseInt(this.positionX))) {\n        this.positionX = 'center';\n      } else {\n        this.positionX = parseInt(this.positionX);\n      }\n    }\n\n    if (this.positionY != 'top' && this.positionY != 'bottom') {\n      if (isNaN(parseInt(this.positionY))) {\n        this.positionY = 'center';\n      } else {\n        this.positionY = parseInt(this.positionY);\n      }\n    }\n\n    this.position =\n      this.positionX + (isNaN(this.positionX)? '' : 'px') + ' ' +\n      this.positionY + (isNaN(this.positionY)? '' : 'px');\n\n    if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\n      if (this.imageSrc && this.iosFix && !this.$element.is('img')) {\n        this.$element.css({\n          backgroundImage: 'url(' + this.imageSrc + ')',\n          backgroundSize: 'cover',\n          backgroundPosition: this.position\n        });\n      }\n      return this;\n    }\n\n    if (navigator.userAgent.match(/(Android)/)) {\n      if (this.imageSrc && this.androidFix && !this.$element.is('img')) {\n        this.$element.css({\n          backgroundImage: 'url(' + this.imageSrc + ')',\n          backgroundSize: 'cover',\n          backgroundPosition: this.position\n        });\n      }\n      return this;\n    }\n\n    /* WPHOOT MOD */\n    // this.$mirror = $('<div />').prependTo('body');\n    // this.$mirror = $('<div />').prependTo('#main');\n    if ( $('#page-wrapper').is('.site-boxed') )\n      this.$mirror = $('<div />').prependTo('#page-wrapper');\n    else\n      this.$mirror = $('<div />').prependTo('body');\n    $(window).on('hootSliderAnimated',function(){ \n      // self.refresh(); // seems redundant. uncomment if a bug is spotted\n      $(this).trigger('resize.px.parallax'); // use resize instead of load.px.parallax (conflicts with waypoint's 'bottom-in-view' offset)\n    });\n    /* WPHOOT MOD END */\n\n    var slider = this.$element.find('>.parallax-slider');\n    var sliderExisted = false;\n\n    if (slider.length == 0)\n      this.$slider = $('<img />').prependTo(this.$mirror);\n    else {\n      this.$slider = slider.prependTo(this.$mirror)\n      sliderExisted = true;\n    }\n\n    this.$mirror.addClass('parallax-mirror').css({\n      visibility: 'hidden',\n      zIndex: this.zIndex,\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      overflow: 'hidden'\n    });\n\n    this.$slider.addClass('parallax-slider').one('load', function() {\
6n      if (!self.naturalHeight || !self.naturalWidth) {\n        self.naturalHeight = this.naturalHeight || this.height || 1;\n        self.naturalWidth  = this.naturalWidth  || this.width  || 1;\n      }\n      self.aspectRatio = self.naturalWidth / self.naturalHeight;\n\n      Parallax.isSetup || Parallax.setup();\n      Parallax.sliders.push(self);\n      Parallax.isFresh = false;\n      Parallax.requestRender();\n    });\n\n    if (!sliderExisted)\n      this.$slider[0].src = this.imageSrc;\n\n    if (this.naturalHeight && this.naturalWidth || this.$slider[0].complete || slider.length > 0) {\n      this.$slider.trigger('load');\n    }\n\n  };\n\n\n  // Parallax Instance Methods\n\n  $.extend(Parallax.prototype, {\n    speed:    0.2,\n    bleed:    0,\n    zIndex:   -100,\n    iosFix:   true,\n    androidFix: true,\n    position: 'center',\n    overScrollFix: false,\n\n    refresh: function() {\n      this.boxWidth        = this.$element.outerWidth();\n      this.boxHeight       = this.$element.outerHeight() + this.bleed * 2;\n      this.boxOffsetTop    = this.$element.offset().top - this.bleed;\n      this.boxOffsetLeft   = this.$element.offset().left;\n      this.boxOffsetBottom = this.boxOffsetTop + this.boxHeight;\n\n      var winHeight = Parallax.winHeight;\n      var docHeight = Parallax.docHeight;\n      var maxOffset = Math.min(this.boxOffsetTop, docHeight - winHeight);\n      var minOffset = Math.max(this.boxOffsetTop + this.boxHeight - winHeight, 0);\n      var imageHeightMin = this.boxHeight + (maxOffset - minOffset) * (1 - this.speed) | 0;\n      var imageOffsetMin = (this.boxOffsetTop - maxOffset) * (1 - this.speed) | 0;\n\n      if (imageHeightMin * this.aspectRatio >= this.boxWidth) {\n        this.imageWidth    = imageHeightMin * this.aspectRatio | 0;\n        this.imageHeight   = imageHeightMin;\n        this.offsetBaseTop = imageOffsetMin;\n\n        var margin = this.imageWidth - this.boxWidth;\n\n        if (this.positionX == 'left') {\n          this.offsetLeft = 0;\n        } else if (this.positionX == 'right') {\n          this.offsetLeft = - margin;\n        } else if (!isNaN(this.positionX)) {\n          this.offsetLeft = Math.max(this.positionX, - margin);\n        } else {\n          this.offsetLeft = - margin / 2 | 0;\n        }\n      } else {\n        this.imageWidth    = this.boxWidth;\n        this.imageHeight   = this.boxWidth / this.aspectRatio | 0;\n        this.offsetLeft    = 0;\n\n        var margin = this.imageHeight - imageHeightMin;\n\n        if (this.positionY == 'top') {\n          this.offsetBaseTop = imageOffsetMin;\n        } else if (this.positionY == 'bottom') {\n          this.offsetBaseTop = imageOffsetMin - margin;\n        } else if (!isNaN(this.positionY)) {\n          this.offsetBaseTop = imageOffsetMin + Math.max(this.positionY, - margin);\n        } else {\n          this.offsetBaseTop = imageOffsetMin - margin / 2 | 0;\n        }\n      }\n    },\n\n    render: function() {\n      var scrollTop    = Parallax.scrollTop;\n      var scrollLeft   = Parallax.scrollLeft;\n      var overScroll   = this.overScrollFix ? Parallax.overScroll : 0;\n      var scrollBottom = scrollTop + Parallax.winHeight;\n\n      if (this.boxOffsetBottom > scrollTop && this.boxOffsetTop <= scrollBottom) {\n        this.visibility = 'visible';\n        this.mirrorTop = this.boxOffsetTop  - scrollTop;\n        this.mirrorLeft = this.boxOffsetLeft - scrollLeft;\n        this.offsetTop = this.offsetBaseTop - this.mirrorTop * (1 - this.speed);\n      } else {\n        this.visibility = 'hidden';\n      }\n\n      this.$mirror.css({\n        transform: 'translate3d(0px, 0px, 0px)',\n        visibility: this.visibility,\n        top: this.mirrorTop - overScroll,\n        left: this.mirrorLeft,\n        height: this.boxHeight,\n        width: this.boxWidth\n      });\n\n      this.$slider.css({\n        transform: 'translate3d(0px, 0px, 0px)',\n        position: 'absolute',\n        top: this.offsetTop,\n        left: this.offsetLeft,\n        height: this.imageHeight,\n        width: this.imageWidth,\n        maxWidth: 'none'\n      });\n    }\n  });\n\n\n  // Parallax Static Methods\n\n  $.extend(Parallax, {\n    scrollTop:    0,\n    scrollLeft:   0,\n    winHeight:    0,\n    winWidth:     0,\n    docHeight:    1 << 30,\n    docWidth:     1 << 30,\n    sliders:      [],\n    isReady:      false,\n    isFresh:      false,\n    isBusy:       false,\n\n    setup: function() {\
6n      if (this.isReady) return;\n\n      var $doc = $(document), $win = $(window);\n\n      var loadDimensions = function() {\n        Parallax.winHeight = $win.height();\n        Parallax.winWidth  = $win.width();\n        Parallax.docHeight = $doc.height();\n        Parallax.docWidth  = $doc.width();\n      };\n\n      var loadScrollPosition = function() {\n        var winScrollTop  = $win.scrollTop();\n        var scrollTopMax  = Parallax.docHeight - Parallax.winHeight;\n        var scrollLeftMax = Parallax.docWidth  - Parallax.winWidth;\n        Parallax.scrollTop  = Math.max(0, Math.min(scrollTopMax,  winScrollTop));\n        Parallax.scrollLeft = Math.max(0, Math.min(scrollLeftMax, $win.scrollLeft()));\n        Parallax.overScroll = Math.max(winScrollTop - scrollTopMax, Math.min(winScrollTop, 0));\n      };\n\n      $win.on('resize.px.parallax load.px.parallax', function() {\n          loadDimensions();\n          Parallax.isFresh = false;\n          Parallax.requestRender();\n        })\n        .on('scroll.px.parallax load.px.parallax', function() {\n          loadScrollPosition();\n          Parallax.requestRender();\n        });\n\n      loadDimensions();\n      loadScrollPosition();\n\n      this.isReady = true;\n    },\n\n    configure: function(options) {\n      if (typeof options == 'object') {\n        delete options.refresh;\n        delete options.render;\n        $.extend(this.prototype, options);\n      }\n    },\n\n    refresh: function() {\n      $.each(this.sliders, function(){ this.refresh() });\n      this.isFresh = true;\n    },\n\n    render: function() {\n      this.isFresh || this.refresh();\n      $.each(this.sliders, function(){ this.render() });\n    },\n\n    requestRender: function() {\n      var self = this;\n\n      if (!this.isBusy) {\n        this.isBusy = true;\n        window.requestAnimationFrame(function() {\n          self.render();\n          self.isBusy = false;\n        });\n      }\n    },\n    destroy: function(el){\n      var i,\n          parallaxElement = $(el).data('px.parallax');\n      parallaxElement.$mirror.remove();\n      for(i=0; i < this.sliders.length; i+=1){\n        if(this.sliders[i] == parallaxElement){\n          this.sliders.splice(i, 1);\n        }\n      }\n      $(el).data('px.parallax', false);\n      if(this.sliders.length === 0){\n        $(window).off('scroll.px.parallax resize.px.parallax load.px.parallax');\n        this.isReady = false;\n        Parallax.isSetup = false;\n      }\n    }\n  });\n\n\n  // Parallax Plugin Definition\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this);\n      var options = typeof option == 'object' && option;\n\n      if (this == window || this == document || $this.is('body')) {\n        Parallax.configure(options);\n      }\n      else if (!$this.data('px.parallax')) {\n        options = $.extend({}, $this.data(), options);\n        $this.data('px.parallax', new Parallax(this, options));\n      }\n      else if (typeof option == 'object')\n      {\n        $.extend($this.data('px.parallax'), options);\n      }\n      if (typeof option == 'string') {\n        if(option == 'destroy'){\n            Parallax['destroy'](this);\n        }
6else{\n          Parallax[option]();\n        }\n      }\n    })\n  };\n\n  var old = $.fn.parallax;\n\n  $.fn.parallax             = Plugin;\n  $.fn.parallax.Constructor = Parallax;\n\n\n  // Parallax No Conflict\n\n  $.fn.parallax.noConflict = function () {\n    $.fn.parallax = old;\n    return this;\n  };\n\n\n  // Parallax Data-API\n\n$( function () {\n    /* WPHOOT MOD */\n    // $('[data-parallax=\"scroll\"]').parallax();\n    if( $('.lightSlider').length > 0 ) setTimeout(function(){ $('[data-parallax=\"scroll\"]').parallax(); }, 3000);\n    else $('[data-parallax=\"scroll\"]').parallax();\n    /* WPHOOT MOD END */\n  });\n\n}(jQuery, window, document));";

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.