PageSourceSearch

https://rentingwell.com/v2/wp-content/themes/renting-well/assets/js/vendor.js?ver=1.0

js rentingwell.com collected 2026-10-08 13:55:05 UTC 106,244 bytes, 1,399 lines download raw bytes

1/* Generated Fri, 07 Feb 2020 02:45:47 GMT */
vendor: 37,045 bytes, lines 2-8
2/*!
3 * Bootstrap v3.3.7 (http://getbootstrap.com)
4 * Copyright 2011-2016 Twitter, Inc.
5 * Licensed under the MIT license
6 */
7if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
8this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
8
9/**
10 * Copyright (c) 2011-2014 Felix Gnass
11 * Licensed under the MIT license
12 */
13(function(root, factory) {
14
15  /* CommonJS */
16  if (typeof exports == 'object')  module.exports = factory()
17
18  /* AMD module */
19  else if (typeof define == 'function' && define.amd) define(factory)
20
21  /* Browser global */
22  else root.Spinner = factory()
23}
24(this, function() {
25  "use strict";
26
27  var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */
28    , animations = {} /* Animation rules keyed by their name */
29    , useCssAnimations /* Whether to use CSS animations or setTimeout */
30
31  /**
32   * Utility function to create elements. If no tag name is given,
33   * a DIV is created. Optionally properties can be passed.
34   */
35  function createEl(tag, prop) {
36    var el = document.createElement(tag || 'div')
37      , n
38
39    for(n in prop) el[n] = prop[n]
40    return el
41  }
42
43  /**
44   * Appends children and returns the parent.
45   */
46  function ins(parent /* child1, child2, ...*/) {
47    for (var i=1, n=arguments.length; i<n; i++)
48      parent.appendChild(arguments[i])
49
50    return parent
51  }
52
53  /**
54   * Insert a new stylesheet to hold the @keyframe or VML rules.
55   */
56  var sheet = (function() {
57    var el = createEl('style', {type : 'text/css'})
58    ins(document.getElementsByTagName('head')[0], el)
59    return el.sheet || el.styleSheet
60  }())
61
62  /**
63   * Creates an opacity keyframe animation rule and returns its name.
64   * Since most mobile Webkits have timing issues with animation-delay,
65   * we create separate rules for each line/segment.
66   */
67  function addAnimation(alpha, trail, i, lines) {
68    var name = ['opacity', trail, ~~(alpha*100), i, lines].join('-')
69      , start = 0.01 + i/lines * 100
70      , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)
71      , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()
72      , pre = prefix && '-' + prefix + '-' || ''
73
74    if (!animations[name]) {
75      sheet.insertRule(
76        '@' + pre + 'keyframes ' + name + '{' +
77        '0%{opacity:' + z + '}' +
78        start + '%{opacity:' + alpha + '}' +
79        (start+0.01) + '%{opacity:1}' +
80        (start+trail) % 100 + '%{opacity:' + alpha + '}' +
81        '100%{opacity:' + z + '}' +
82        '}', sheet.cssRules.length)
83
84      animations[name] = 1
85    }
86
87    return name
88  }
89
90  /**
91   * Tries various vendor prefixes and returns the first supported property.
92   */
93  function vendor(el, prop) {
94    var s = el.style
95      , pp
96      , i
97
98    prop = prop.charAt(0).toUpperCase() + prop.slice(1)
99    for(i=0; i<prefixes.length; i++) {
100      pp = prefixes[i]+prop
101      if(s[pp] !== undefined) return pp
102    }
103    if(s[prop] !== undefined) return prop
104  }
105
106  /**
107   * Sets multiple style properties at once.
108   */
109  function css(el, prop) {
110    for (var n in prop)
111      el.style[vendor(el, n)||n] = prop[n]
112
113    return el
114  }
115
116  /**
117   * Fills in default values.
118   */
119  function merge(obj) {
120    for (var i=1; i < arguments.length; i++) {
121      var def = arguments[i]
122      for (var n in def)
123        if (obj[n] === undefined) obj[n] = def[n]
124    }
125    return obj
126  }
127
128  /**
129   * Returns the absolute page-offset of the given element.
130   */
131  function pos(el) {
132    var o = { x:el.offsetLeft, y:el.offsetTop }
133    while((el = el.offsetParent))
134      o.x+=el.offsetLeft, o.y+=el.offsetTop
135
136    return o
137  }
138
139  /**
140   * Returns the line color from the given string or array.
141   */
142  function getColor(color, idx) {
143    return typeof color == 'string' ? color : color[idx % color.length]
144  }
145
146  // Built-in defaults
147
148  var defaults = {
149    lines: 12,            // The number of lines to draw
150    length: 7,            // The length of each line
151    width: 5,             // The line thickness
152    radius: 10,           // The radius of the inner circle
153    rotate: 0,            // Rotation offset
154    corners: 1,           // Roundness (0..1)
155    color: '#000',        // #rgb or #rrggbb
156    direction: 1,         // 1: clockwise, -1: counterclockwise
157    speed: 1,             // Rounds per second
158    trail: 100,           // Afterglow percentage
159    opacity: 1/4,         // Opacity of the lines
160    fps: 20,              // Frames per second when using setTimeout()
161    zIndex: 2e9,          // Use a high z-index by default
162    className: 'spinner', // CSS class to assign to the element
163    top: '50%',           // center vertically
164    left: '50%',          // center horizontally
165    position: 'absolute'  // element position
166  }
167
168  /** The constructor */
169  function Spinner(o) {
170    this.opts = merge(o || {}, Spinner.defaults, defaults)
171  }
172
173  // Global defaults that override the built-ins:
174  Spinner.defaults = {}
175
176  merge(Spinner.prototype, {
177
178    /**
179     * Adds the spinner to the given target element. If this instance is already
180     * spinning, it is automatically removed from its previous target b calling
181     * stop() internally.
182     */
183    spin: function(target) {
184      this.stop()
185
186      var self = this
187        , o = self.opts
188        , el = self.el = css(createEl(0, {className: o.className}), {position: o.position, width: 0, zIndex: o.zIndex})
189        , mid = o.radius+o.length+o.width
190
191      css(el, {
192        left: o.left,
193        top: o.top
194      })
195        
196      if (target) {
197        target.insertBefore(el, target.firstChild||null)
198      }
199
200      el.setAttribute('role', 'progressbar')
201      self.lines(el, self.opts)
202
203      if (!useCssAnimations) {
204        // No CSS animation support, use setTimeout() instead
205        var i = 0
206          , start = (o.lines - 1) * (1 - o.direction) / 2
207          , alpha
208          , fps = o.fps
209          , f = fps/o.speed
210          , ostep = (1-o.opacity) / (f*o.trail / 100)
211          , astep = f/o.lines
212
213        ;(function anim() {
214          i++;
215          for (var j = 0; j < o.lines; j++) {
216            alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)
217
218            self.opacity(el, j * o.direction + start, alpha, o)
219          }
220          self.timeout = self.el && setTimeout(anim, ~~(1000/fps))
221        })()
222      }
223      return self
224    },
225
226    /**
227     * Stops and removes the Spinner.
228     */
229    stop: function() {
230      var el = this.el
231      if (el) {
232        clearTimeout(this.timeout)
233        if (el.parentNode) el.parentNode.removeChild(el)
234        this.el = undefined
235      }
236      return this
237    },
238
239    /**
240     * Internal method that draws the individual lines. Will be overwritten
241     * in VML fallback mode below.
242     */
243    lines: function(el, o) {
244      var i = 0
245        , start = (o.lines - 1) * (1 - o.direction) / 2
246        , seg
247
248      function fill(color, shadow) {
249        return css(createEl(), {
250          position: 'absolute',
251          width: (o.length+o.width) + 'px',
252          height: o.width + 'px',
253          background: color,
254          boxShadow: shadow,
255          transformOrigin: 'left',
256          transform: 'rotate(' + ~~(360/o.lines*i+o.rotate) + 'deg) translate(' + o.radius+'px' +',0)',
257          borderRadius: (o.corners * o.width>>1) + 'px'
258        })
259      }
260
261      for (; i < o.lines; i++) {
262        seg = css(createEl(), {
263          position: 'absolute',
264          top: 1+~(o.width/2) + 'px',
265          transform: o.hwaccel ? 'translate3d(0,0,0)' : '',
266          opacity: o.opacity,
267          animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1/o.speed + 's linear infinite'
268        })
269
270        if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'}))
271        ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))
272      }
273      return el
274    },
275
276    /**
277     * Internal method that adjusts the opacity of a single line.
278     * Will be overwritten in VML fallback mode below.
279     */
280    opacity: function(el, i, val) {
281      if (i < el.childNodes.length) el.childNodes[i].style.opacity = val
282    }
283
284  })
285
286
287  function initVML() {
288
289    /* Utility function to create a VML tag */
290    function vml(tag, attr) {
291      return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr)
292    }
293
294    // No CSS transforms but VML support, add a CSS rule for VML elements:
295    sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')
296
297    Spinner.prototype.lines = function(el, o) {
298      var r = o.length+o.width
299        , s = 2*r
300
301      function grp() {
302        return css(
303          vml('group', {
304            coordsize: s + ' ' + s,
305            coordorigin: -r + ' ' + -r
306          }),
307          { width: s, height: s }
308        )
309      }
310
311      var margin = -(o.width+o.length)*2 + 'px'
312        , g = css(grp(), {position: 'absolute', top: margin, left: margin})
313        , i
314
315      function seg(i, dx, filter) {
316        ins(g,
317          ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
318            ins(css(vml('roundrect', {arcsize: o.corners}), {
319                width: r,
320                height: o.width,
321                left: o.radius,
322                top: -o.width>>1,
323                filter: filter
324              }),
325              vml('fill', {color: getColor(o.color, i), opacity: o.opacity}),
326              vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
327            )
328          )
329        )
330      }
331
332      if (o.shadow)
333        for (i = 1; i <= o.lines; i++)
334          seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')
335
336      for (i = 1; i <= o.lines; i++) seg(i)
337      return ins(el, g)
338    }
339
340    Spinner.prototype.opacity = function(el, i, val, o) {
341      var c = el.firstChild
342      o = o.shadow && o.lines || 0
343      if (c && i+o < c.childNodes.length) {
344        c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild
345        if (c) c.opacity = val
346      }
347    }
348  }
349
350  var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})
351
352  if (!vendor(probe, 'transform') && probe.adj) initVML()
353  else useCssAnimations = vendor(probe, 'animation')
354
355  return Spinner
356
357}));
358
359/**
360 * Copyright (c) 2011-2014 Felix Gnass
361 * Licensed under the MIT license
362 */
363
364/*
365
366Basic Usage:
367============
368
369$('#el').spin(); // Creates a default Spinner using the text color of #el.
370$('#el').spin({ ... }); // Creates a Spinner using the provided options.
371
372$('#el').spin(false); // Stops and removes the spinner.
373
374Using Presets:
375==============
376
377$('#el').spin('small'); // Creates a 'small' Spinner using the text color of #el.
378$('#el').spin('large', '#fff'); // Creates a 'large' white Spinner.
379
380Adding a custom preset:
381=======================
382
383$.fn.spin.presets.flower = {
384  lines: 9
385  length: 10
386  width: 20
387  radius: 0
388}
389
390$('#el').spin('flower', 'red');
391
392*/
393
394(function(factory) {
395
396  if (typeof exports == 'object') {
397    // CommonJS
398    factory(require('jquery'), require('spin'))
399  }
400  else if (typeof define == 'function' && define.amd) {
401    // AMD, register as anonymous module
402    define(['jquery', 'spin'], factory)
403  }
404  else {
405    // Browser globals
406    if (!window.Spinner) throw new Error('Spin.js not present')
407    factory(window.jQuery, window.Spinner)
408  }
409
410}(function($, Spinner) {
411
412  $.fn.spin = function(opts, color) {
413
414    return this.each(function() {
415      var $this = $(this),
416        data = $this.data();
417
418      if (data.spinner) {
419        data.spinner.stop();
420        delete data.spinner;
421      }
422      if (opts !== false) {
423        opts = $.extend(
424          { color: color || $this.css('color') },
425          $.fn.spin.presets[opts] || opts
426        )
427        data.spinner = new Spinner(opts).spin(this)
428      }
429    })
430  }
431
432  $.fn.spin.presets = {
433    tiny: { lines: 8, length: 2, width: 2, radius: 3 },
434    small: { lines: 8, length: 4, width: 3, radius: 5 },
435    large: { lines: 10, length: 8, width: 4, radius: 8 }
436  }
437
438}));
439
440/*! jRespond.js v 0.10 | Author: Jeremy Fields [[email protected]], 2013 | License: MIT */
441!function(a,b,c){"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=c:(a[b]=c,"function"==typeof define&&define.amd&&define(b,[],function(){return c}))}(this,"jRespond",function(a,b,c){"use strict";return function(a){var b=[],d=[],e=a,f="",g="",i=0,j=100,k=500,l=k,m=function(){var a=0;return a="number"!=typeof window.innerWidth?0!==document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth:window.innerWidth}
441,n=function(a){if(a.length===c)o(a);else for(var b=0;b<a.length;b++)o(a[b])},o=function(a){var e=a.breakpoint,h=a.enter||c;b.push(a),d.push(!1),r(e)&&(h!==c&&h.call(null,{entering:f,exiting:g}),d[b.length-1]=!0)},p=function(){for(var a=[],e=[],h=0;h<b.length;h++){var i=b[h].breakpoint,j=b[h].enter||c,k=b[h].exit||c;"*"===i?(j!==c&&a.push(j),k!==c&&e.push(k)):r(i)?(j===c||d[h]||a.push(j),d[h]=!0):(k!==c&&d[h]&&e.push(k),d[h]=!1)}for(var l={entering:f,exiting:g},m=0;m<e.length;m++)e[m].call(null,l);for(var n=0;n<a.length;n++)a[n].call(null,l)},q=function(a){for(var b=!1,c=0;c<e.length;c++)if(a>=e[c].enter&&a<=e[c].exit){b=!0;break}b&&f!==e[c].label?(g=f,f=e[c].label,p()):b||""===f||(f="",p())},r=function(a){if("object"==typeof a){if(a.join().indexOf(f)>=0)return!0}else{if("*"===a)return!0;if("string"==typeof a&&f===a)return!0}},s=function(){var a=m();a!==i?(l=j,q(a)):l=k,i=a,setTimeout(s,l)};return s(),{addFunc:function(a){n(a)},getBreakpoint:function(){return f}}}}(this,this.document));
442/*!
443 * jQuery Equal Lines - v0.9.2 - 2018-01-29
444 * https://bitbucket.org/relishinc/jquery-equal-lines-plugin
445 * Copyright (c) 2018 Steve Palmer
446 * Licensed MIT
447 */
448
449!function(a){a.fn.equalLines=function(b){function c(a,b){var c=!1;return function(){c||(a.call(),c=!0,setTimeout(function(){c=!1},b))}}var d=this,e=a.extend({precision:5,debug:!1,throttling:300},b);return d.each(function(){a(this).data("equalLines.initialized")||a(this).data("equalLines.initialized",!0).wrapInner('<span data-equal-lines-wrapper style="display:inline-block; max-width: 100%;" />'),e.debug&&a(this).css("background","rgba(255,0,0,0.25)")}).on("equalLines.updateLayout",function(){var b=a(this),c=b.find("[data-equal-lines-wrapper]"),d=0,f=0;if(b.data("equalLines.initialized")){for("inline"===b.css("display")&&(console.log('jQuery Equal Lines doesn\'t work on "display: inline" elements! Setting elements to "inline-block"'),b.css("display","inline-block")),c.css("width","100%"),e.debug&&b.css("background","rgba(255,0,0,0.5)"),d=b.height();b.height()===d&&b.height()&&d||e.debug&&f>999;)c.width(c.width()-Math.max(e.precision,1)),f++;e.debug&&console.log("Finished:",b.height(),d,c.width(),f),c.width(c.width()+Math.max(e.precision,1))}}).trigger("equalLines.updateLayout"),d.length&&a(window).on("resize.equalLines",c(function(){d.trigger("equalLines.updateLayout")},Math.max(e.throttling,0))),this}}(jQuery);
450/*!
451 * Copyright 2012, Chris Wanstrath
452 * Released under the MIT License
453 * https://github.com/defunkt/jquery-pjax
454 */
455
456(function($){
457
458// When called on a container with a selector, fetches the href with
459// ajax into the container or with the data-pjax attribute on the link
460// itself.
461//
462// Tries to make sure the back button and ctrl+click work the way
463// you'd expect.
464//
465// Exported as $.fn.pjax
466//
467// Accepts a jQuery ajax options object that may include these
468// pjax specific options:
469//
470//
471// container - Where to stick the response body. Usually a String selector.
472//             $(container).html(xhr.responseBody)
473//             (default: current jquery context)
474//      push - Whether to pushState the URL. Defaults to true (of course).
475//   replace - Want to use replaceState instead? That's cool.
476//
477// For convenience the second parameter can be either the container or
478// the options object.
479//
480// Returns the jQuery object
481function fnPjax(selector, container, options) {
482  var context = this
483  return this.on('click.pjax', selector, function(event) {
484    var opts = $.extend({}, optionsFor(container, options))
485    if (!opts.container)
486      opts.container = $(this).attr('data-pjax') || context
487    handleClick(event, opts)
488  })
489}
490
491// Public: pjax on click handler
492//
493// Exported as $.pjax.click.
494//
495// event   - "click" jQuery.Event
496// options - pjax options
497//
498// Examples
499//
500//   $(document).on('click', 'a', $.pjax.click)
501//   // is the same as
502//   $(document).pjax('a')
503//
504//  $(document).on('click', 'a', function(event) {
505//    var container = $(this).closest('[data-pjax-container]')
506//    $.pjax.click(event, container)
507//  })
508//
509// Returns nothing.
510function handleClick(event, container, options) {
511  options = optionsFor(container, options)
512
513  var link = event.currentTarget
514
515  if (link.tagName.toUpperCase() !== 'A')
516    throw "$.fn.pjax or $.pjax.click requires an anchor element"
517
518  // Middle click, cmd click, and ctrl click should open
519  // links in a new tab as normal.
520  if ( event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey )
521    return
522
523  // Ignore cross origin links
524  if ( location.protocol !== link.protocol || location.hostname !== link.hostname )
525    return
526
527  // Ignore case when a hash is being tacked on the current URL
528  if ( link.href.indexOf('#') > -1 && stripHash(link) == stripHash(location) )
529    return
530
531  // Ignore event with default prevented
532  if (event.isDefaultPrevented())
533    return
534
535  var defaults = {
536    url: link.href,
537    container: $(link).attr('data-pjax'),
538    target: link
539  }
540
541  var opts = $.extend({}, defaults, options)
542  var clickEvent = $.Event('pjax:click')
543  $(link).trigger(clickEvent, [opts])
544
545  if (!clickEvent.isDefaultPrevented()) {
546    pjax(opts)
547    event.preventDefault()
548    $(link).trigger('pjax:clicked', [opts])
549  }
550}
551
552// Public: pjax on form submit handler
553//
554// Exported as $.pjax.submit
555//
556// event   - "click" jQuery.Event
557// options - pjax options
558//
559// Examples
560//
561//  $(document).on('submit', 'form', function(event) {
562//    var container = $(this).closest('[data-pjax-container]')
563//    $.pjax.submit(event, container)
564//  })
565//
566// Returns nothing.
567function handleSubmit(event, container, options) {
568  options = optionsFor(container, options)
569
570  var form = event.currentTarget
571
572  if (form.tagName.toUpperCase() !== 'FORM')
573    throw "$.pjax.submit requires a form element"
574
575  var defaults = {
576    type: form.method.toUpperCase(),
577    url: form.action,
578    container: $(form).attr('data-pjax'),
579    target: form
580  }
581
582  if (defaults.type !== 'GET' && window.FormData !== undefined) {
583    defaults.data = new FormData(form);
584    defaults.processData = false;
585    defaults.contentType = false;
vendor: 21,735 bytes, lines 586-1360
586  } else {
587    // Can't handle file uploads, exit
588    if ($(form).find(':file').length) {
589      return;
590    }
591
592    // Fallback to manually serializing the fields
593    defaults.data = $(form).serializeArray();
594  }
595
596  pjax($.extend({}, defaults, options))
597
598  event.preventDefault()
599}
600
601// Loads a URL with ajax, puts the response body inside a container,
602// then pushState()'s the loaded URL.
603//
604// Works just like $.ajax in that it accepts a jQuery ajax
605// settings object (with keys like url, type, data, etc).
606//
607// Accepts these extra keys:
608//
609// container - Where to stick the response body.
610//             $(container).html(xhr.responseBody)
611//      push - Whether to pushState the URL. Defaults to true (of course).
612//   replace - Want to use replaceState instead? That's cool.
613//
614// Use it just like $.ajax:
615//
616//   var xhr = $.pjax({ url: this.href, container: '#main' })
617//   console.log( xhr.readyState )
618//
619// Returns whatever $.ajax returns.
620function pjax(options) {
621  options = $.extend(true, {}, $.ajaxSettings, pjax.defaults, options)
622
623  if ($.isFunction(options.url)) {
624    options.url = options.url()
625  }
626
627  var target = options.target
628
629  var hash = parseURL(options.url).hash
630
631  var context = options.context = findContainerFor(options.container)
632
633  // We want the browser to maintain two separate internal caches: one
634  // for pjax'd partial page loads and one for normal page loads.
635  // Without adding this secret parameter, some browsers will often
636  // confuse the two.
637  if (!options.data) options.data = {}
638  if ($.isArray(options.data)) {
639    options.data.push({name: '_pjax', value: context.selector})
640  } else {
641    options.data._pjax = context.selector
642  }
643
644  function fire(type, args, props) {
645    if (!props) props = {}
646    props.relatedTarget = target
647    var event = $.Event(type, props)
648    context.trigger(event, args)
649    return !event.isDefaultPrevented()
650  }
651
652  var timeoutTimer
653
654  options.beforeSend = function(xhr, settings) {
655    // No timeout for non-GET requests
656    // Its not safe to request the resource again with a fallback method.
657    if (settings.type !== 'GET') {
658      settings.timeout = 0
659    }
660
661    xhr.setRequestHeader('X-PJAX', 'true')
662    xhr.setRequestHeader('X-PJAX-Container', context.selector)
663
664    if (!fire('pjax:beforeSend', [xhr, settings]))
665      return false
666
667    if (settings.timeout > 0) {
668      timeoutTimer = setTimeout(function() {
669        if (fire('pjax:timeout', [xhr, options]))
670          xhr.abort('timeout')
671      }, settings.timeout)
672
673      // Clear timeout setting so jquerys internal timeout isn't invoked
674      settings.timeout = 0
675    }
676
677    var url = parseURL(settings.url)
678    if (hash) url.hash = hash
679    options.requestUrl = stripInternalParams(url)
680  }
681
682  options.complete = function(xhr, textStatus) {
683    if (timeoutTimer)
684      clearTimeout(timeoutTimer)
685
686    fire('pjax:complete', [xhr, textStatus, options])
687
688    fire('pjax:end', [xhr, options])
689  }
690
691  options.error = function(xhr, textStatus, errorThrown) {
692    var container = extractContainer("", xhr, options)
693
694    var allowed = fire('pjax:error', [xhr, textStatus, errorThrown, options])
695    if (options.type == 'GET' && textStatus !== 'abort' && allowed) {
696      locationReplace(container.url)
697    }
698  }
699
700  options.success = function(data, status, xhr) {
701    var previousState = pjax.state;
702
703    // If $.pjax.defaults.version is a function, invoke it first.
704    // Otherwise it can be a static string.
705    var currentVersion = (typeof $.pjax.defaults.version === 'function') ?
706      $.pjax.defaults.version() :
707      $.pjax.defaults.version
708
709    var latestVersion = xhr.getResponseHeader('X-PJAX-Version')
710
711    var container = extractContainer(data, xhr, options)
712
713    var url = parseURL(container.url)
714    if (hash) {
715      url.hash = hash
716      container.url = url.href
717    }
718
719    // If there is a layout version mismatch, hard load the new url
720    if (currentVersion && latestVersion && currentVersion !== latestVersion) {
721      locationReplace(container.url)
722      return
723    }
724
725    // If the new response is missing a body, hard load the page
726    if (!container.contents) {
727      locationReplace(container.url)
728      return
729    }
730
731    pjax.state = {
732      id: options.id || uniqueId(),
733      url: container.url,
734      title: container.title,
735      container: context.selector,
736      fragment: options.fragment,
737      timeout: options.timeout
738    }
739
740    if (options.push || options.replace) {
741      window.history.replaceState(pjax.state, container.title, container.url)
742    }
743
744    // Clear out any focused controls before inserting new page contents.
745    try {
746      document.activeElement.blur()
747    } catch (e) { }
748
749    if (container.title) document.title = container.title
750
751    fire('pjax:beforeReplace', [container.contents, options], {
752      state: pjax.state,
753      previousState: previousState
754    })
755    context.html(container.contents)
756
757    // FF bug: Won't autofocus fields that are inserted via JS.
758    // This behavior is incorrect. So if theres no current focus, autofocus
759    // the last field.
760    //
761    // http://www.w3.org/html/wg/drafts/html/master/forms.html
762    var autofocusEl = context.find('input[autofocus], textarea[autofocus]').last()[0]
763    if (autofocusEl && document.activeElement !== autofocusEl) {
764      autofocusEl.focus();
765    }
766
767    executeScriptTags(container.scripts)
768
769    var scrollTo = options.scrollTo
770
771    // Ensure browser scrolls to the element referenced by the URL anchor
772    if (hash) {
773      var name = decodeURIComponent(hash.slice(1))
774      var target = document.getElementById(name) || document.getElementsByName(name)[0]
775      if (target) scrollTo = $(target).offset().top
776    }
777
778    if (typeof scrollTo == 'number') $(window).scrollTop(scrollTo)
779
780    fire('pjax:success', [data, status, xhr, options])
781  }
782
783
784  // Initialize pjax.state for the initial page load. Assume we're
785  // using the container and options of the link we're loading for the
786  // back button to the initial page. This ensures good back button
787  // behavior.
788  if (!pjax.state) {
789    pjax.state = {
790      id: uniqueId(),
791      url: window.location.href,
792      title: document.title,
793      container: context.selector,
794      fragment: options.fragment,
795      timeout: options.timeout
796    }
797    window.history.replaceState(pjax.state, document.title)
798  }
799
800  // Cancel the current request if we're already pjaxing
801  abortXHR(pjax.xhr)
802
803  pjax.options = options
804  var xhr = pjax.xhr = $.ajax(options)
805
806  if (xhr.readyState > 0) {
807    if (options.push && !options.replace) {
808      // Cache current container element before replacing it
809      cachePush(pjax.state.id, cloneContents(context))
810
811      window.history.pushState(null, "", options.requestUrl)
812    }
813
814    fire('pjax:start', [xhr, options])
815    fire('pjax:send', [xhr, options])
816  }
817
818  return pjax.xhr
819}
820
821// Public: Reload current page with pjax.
822//
823// Returns whatever $.pjax returns.
824function pjaxReload(container, options) {
825  var defaults = {
826    url: window.location.href,
827    push: false,
828    replace: true,
829    scrollTo: false
830  }
831
832  return pjax($.extend(defaults, optionsFor(container, options)))
833}
834
835// Internal: Hard replace current state with url.
836//
837// Work for around WebKit
838//   https://bugs.webkit.org/show_bug.cgi?id=93506
839//
840// Returns nothing.
841function locationReplace(url) {
842  window.history.replaceState(null, "", pjax.state.url)
843  window.location.replace(url)
844}
845
846
847var initialPop = true
848var initialURL = window.location.href
849var initialState = window.history.state
850
851// Initialize $.pjax.state if possible
852// Happens when reloading a page and coming forward from a different
853// session history.
854if (initialState && initialState.container) {
855  pjax.state = initialState
856}
857
858// Non-webkit browsers don't fire an initial popstate event
859if ('state' in window.history) {
860  initialPop = false
861}
862
863// popstate handler takes care of the back and forward buttons
864//
865// You probably shouldn't use pjax on pages with other pushState
866// stuff yet.
867function onPjaxPopstate(event) {
868
869  // Hitting back or forward should override any pending PJAX request.
870  if (!initialPop) {
871    abortXHR(pjax.xhr)
872  }
873
874  var previousState = pjax.state
875  var state = event.state
876  var direction
877
878  if (state && state.container) {
879    // When coming forward from a separate history session, will get an
880    // initial pop with a state we are already at. Skip reloading the current
881    // page.
882    if (initialPop && initialURL == state.url) return
883
884    if (previousState) {
885      // If popping back to the same state, just skip.
886      // Could be clicking back from hashchange rather than a pushState.
887      if (previousState.id === state.id) return
888
889      // Since state IDs always increase, we can deduce the navigation direction
890      direction = previousState.id < state.id ? 'forward' : 'back'
891    }
892
893    var cache = cacheMapping[state.id] || []
894    var container = $(cache[0] || state.container), contents = cache[1]
895
896    if (container.length) {
897      if (previousState) {
898        // Cache current container before replacement and inform the
899        // cache which direction the history shifted.
900        cachePop(direction, previousState.id, cloneContents(container))
901      }
902
903      var popstateEvent = $.Event('pjax:popstate', {
904        state: state,
905        direction: direction
906      })
907      container.trigger(popstateEvent)
908
909      var options = {
910        id: state.id,
911        url: state.url,
912        container: container,
913        push: false,
914        fragment: state.fragment,
915        timeout: state.timeout,
916        scrollTo: false
917      }
918
919      if (contents) {
920        container.trigger('pjax:start', [null, options])
921
922        pjax.state = state
923        if (state.title) document.title = state.title
924        var beforeReplaceEvent = $.Event('pjax:beforeReplace', {
925          state: state,
926          previousState: previousState
927        })
928        container.trigger(beforeReplaceEvent, [contents, options])
929        container.html(contents)
930
931        container.trigger('pjax:end', [null, options])
932      } else {
933        pjax(options)
934      }
935
936      // Force reflow/relayout before the browser tries to restore the
937      // scroll position.
938      container[0].offsetHeight
939    } else {
940      locationReplace(location.href)
941    }
942  }
943  initialPop = false
944}
945
946// Fallback version of main pjax function for browsers that don't
947// support pushState.
948//
949// Returns nothing since it retriggers a hard form submission.
950function fallbackPjax(options) {
951  var url = $.isFunction(options.url) ? options.url() : options.url,
952      method = options.type ? options.type.toUpperCase() : 'GET'
953
954  var form = $('<form>', {
955    method: method === 'GET' ? 'GET' : 'POST',
956    action: url,
957    style: 'display:none'
958  })
959
960  if (method !== 'GET' && method !== 'POST') {
961    form.append($('<input>', {
962      type: 'hidden',
963      name: '_method',
964      value: method.toLowerCase()
965    }))
966  }
967
968  var data = options.data
969  if (typeof data === 'string') {
970    $.each(data.split('&'), function(index, value) {
971      var pair = value.split('=')
972      form.append($('<input>', {type: 'hidden', name: pair[0], value: pair[1]}))
973    })
974  } else if ($.isArray(data)) {
975    $.each(data, function(index, value) {
976      form.append($('<input>', {type: 'hidden', name: value.name, value: value.value}))
977    })
978  } else if (typeof data === 'object') {
979    var key
980    for (key in data)
981      form.append($('<input>', {type: 'hidden', name: key, value: data[key]}))
982  }
983
984  $(document.body).append(form)
985  form.submit()
986}
987
988// Internal: Abort an XmlHttpRequest if it hasn't been completed,
989// also removing its event handlers.
990function abortXHR(xhr) {
991  if ( xhr && xhr.readyState < 4) {
992    xhr.onreadystatechange = $.noop
993    xhr.abort()
994  }
995}
996
997// Internal: Generate unique id for state object.
998//
999// Use a timestamp instead of a counter since ids should still be
1000// unique across page loads.
1001//
1002// Returns Number.
1003function uniqueId() {
1004  return (new Date).getTime()
1005}
1006
1007function cloneContents(container) {
1008  var cloned = container.clone()
1009  // Unmark script tags as already being eval'd so they can get executed again
1010  // when restored from cache. HAXX: Uses jQuery internal method.
1011  cloned.find('script').each(function(){
1012    if (!this.src) jQuery._data(this, 'globalEval', false)
1013  })
1014  return [container.selector, cloned.contents()]
1015}
1016
1017// Internal: Strip internal query params from parsed URL.
1018//
1019// Returns sanitized url.href String.
1020function stripInternalParams(url) {
1021  url.search = url.search.replace(/([?&])(_pjax|_)=[^&]*/g, '')
1022  return url.href.replace(/\?($|#)/, '$1')
1023}
1024
1025// Internal: Parse URL components and returns a Locationish object.
1026//
1027// url - String URL
1028//
1029// Returns HTMLAnchorElement that acts like Location.
1030function parseURL(url) {
1031  var a = document.createElement('a')
1032  a.href = url
1033  return a
1034}
1035
1036// Internal: Return the `href` component of given URL object with the hash
1037// portion removed.
1038//
1039// location - Location or HTMLAnchorElement
1040//
1041// Returns String
1042function stripHash(location) {
1043  return location.href.replace(/#.*/, '')
1044}
1045
1046// Internal: Build options Object for arguments.
1047//
1048// For convenience the first parameter can be either the container or
1049// the options object.
1050//
1051// Examples
1052//
1053//   optionsFor('#container')
1054//   // => {container: '#container'}
1055//
1056//   optionsFor('#container', {push: true})
1057//   // => {container: '#container', push: true}
1058//
1059//   optionsFor({container: '#container', push: true})
1060//   // => {container: '#container', push: true}
1061//
1062// Returns options Object.
1063function optionsFor(container, options) {
1064  // Both container and options
1065  if ( container && options )
1066    options.container = container
1067
1068  // First argument is options Object
1069  else if ( $.isPlainObject(container) )
1070    options = container
1071
1072  // Only container
1073  else
1074    options = {container: container}
1075
1076  // Find and validate container
1077  if (options.container)
1078    options.container = findContainerFor(options.container)
1079
1080  return options
1081}
1082
1083// Internal: Find container element for a variety of inputs.
1084//
1085// Because we can't persist elements using the history API, we must be
1086// able to find a String selector that will consistently find the Element.
1087//
1088// container - A selector String, jQuery object, or DOM Element.
1089//
1090// Returns a jQuery object whose context is `document` and has a selector.
1091function findContainerFor(container) {
1092  container = $(container)
1093
1094  if ( !container.length ) {
1095    throw "no pjax container for " + container.selector
1096  } else if ( container.selector !== '' && container.context === document ) {
1097    return container
1098  } else if ( container.attr('id') ) {
1099    return $('#' + container.attr('id'))
1100  } else {
1101    throw "cant get selector for pjax container!"
1102  }
1103}
1104
1105// Internal: Filter and find all elements matching the selector.
1106//
1107// Where $.fn.find only matches descendants, findAll will test all the
1108// top level elements in the jQuery object as well.
1109//
1110// elems    - jQuery object of Elements
1111// selector - String selector to match
1112//
1113// Returns a jQuery object.
1114function findAll(elems, selector) {
1115  return elems.filter(selector).add(elems.find(selector));
1116}
1117
1118function parseHTML(html) {
1119  return $.parseHTML(html, document, true)
1120}
1121
1122// Internal: Extracts container and metadata from response.
1123//
1124// 1. Extracts X-PJAX-URL header if set
1125// 2. Extracts inline <title> tags
1126// 3. Builds response Element and extracts fragment if set
1127//
1128// data    - String response data
1129// xhr     - XHR response
1130// options - pjax options Object
1131//
1132// Returns an Object with url, title, and contents keys.
1133function extractContainer(data, xhr, options) {
1134  var obj = {}, fullDocument = /<html/i.test(data)
1135
1136  // Prefer X-PJAX-URL header if it was set, otherwise fallback to
1137  // using the original requested url.
1138  var serverUrl = xhr.getResponseHeader('X-PJAX-URL')
1139  obj.url = serverUrl ? stripInternalParams(parseURL(serverUrl)) : options.requestUrl
1140
1141  // Attempt to parse response html into elements
1142  if (fullDocument) {
1143    var $head = $(parseHTML(data.match(/<head[^>]*>([\s\S.]*)<\/head>/i)[0]))
1144    var $body = $(parseHTML(data.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0]))
1145  } else {
1146    var $head = $body = $(parseHTML(data))
1147  }
1148
1149  // If response data is empty, return fast
1150  if ($body.length === 0)
1151    return obj
1152
1153  // If there's a <title> tag in the header, use it as
1154  // the page's title.
1155  obj.title = findAll($head, 'title').last().text()
1156
1157  if (options.fragment) {
1158    // If they specified a fragment, look for it in the response
1159    // and pull it out.
1160    if (options.fragment === 'body') {
1161      var $fragment = $body
1162    } else {
1163      var $fragment = findAll($body, options.fragment).first()
1164    }
1165
1166    if ($fragment.length) {
1167      obj.contents = options.fragment === 'body' ? $fragment : $fragment.contents()
1168
1169      // If there's no title, look for data-title and title attributes
1170      // on the fragment
1171      if (!obj.title)
1172        obj.title = $fragment.attr('title') || $fragment.data('title')
1173    }
1174
1175  } else if (!fullDocument) {
1176    obj.contents = $body
1177  }
1178
1179  // Clean up any <title> tags
1180  if (obj.contents) {
1181    // Remove any parent title elements
1182    obj.contents = obj.contents.not(function() { return $(this).is('title') })
1183
1184    // Then scrub any titles from their descendants
1185    obj.contents.find('title').remove()
1186
1187    // Gather all script[src] elements
1188    obj.scripts = findAll(obj.contents, 'script[src]').remove()
1189    obj.contents = obj.contents.not(obj.scripts)
1190  }
1191
1192  // Trim any whitespace off the title
1193  if (obj.title) obj.title = $.trim(obj.title)
1194
1195  return obj
1196}
1197
1198// Load an execute scripts using standard script request.
1199//
1200// Avoids jQuery's traditional $.getScript which does a XHR request and
1201// globalEval.
1202//
1203// scripts - jQuery object of script Elements
1204//
1205// Returns nothing.
1206function executeScriptTags(scripts) {
1207  if (!scripts) return
1208
1209  var existingScripts = $('script[src]')
1210
1211  scripts.each(function() {
1212    var src = this.src
1213    var matchedScripts = existingScripts.filter(function() {
1214      return this.src === src
1215    })
1216    if (matchedScripts.length) return
1217
1218    var script = document.createElement('script')
1219    var type = $(this).attr('type')
1220    if (type) script.type = type
1221    script.src = $(this).attr('src')
1222    document.head.appendChild(script)
1223  })
1224}
1225
1226// Internal: History DOM caching class.
1227var cacheMapping      = {}
1228var cacheForwardStack = []
1229var cacheBackStack    = []
1230
1231// Push previous state id and container contents into the history
1232// cache. Should be called in conjunction with `pushState` to save the
1233// previous container contents.
1234//
1235// id    - State ID Number
1236// value - DOM Element to cache
1237//
1238// Returns nothing.
1239function cachePush(id, value) {
1240  cacheMapping[id] = value
1241  cacheBackStack.push(id)
1242
1243  // Remove all entries in forward history stack after pushing a new page.
1244  trimCacheStack(cacheForwardStack, 0)
1245
1246  // Trim back history stack to max cache length.
1247  trimCacheStack(cacheBackStack, pjax.defaults.maxCacheLength)
1248}
1249
1250// Shifts cache from directional history cache. Should be
1251// called on `popstate` with the previous state id and container
1252// contents.
1253//
1254// direction - "forward" or "back" String
1255// id        - State ID Number
1256// value     - DOM Element to cache
1257//
1258// Returns nothing.
1259function cachePop(direction, id, value) {
1260  var pushStack, popStack
1261  cacheMapping[id] = value
1262
1263  if (direction === 'forward') {
1264    pushStack = cacheBackStack
1265    popStack  = cacheForwardStack
1266  } else {
1267    pushStack = cacheForwardStack
1268    popStack  = cacheBackStack
1269  }
1270
1271  pushStack.push(id)
1272  if (id = popStack.pop())
1273    delete cacheMapping[id]
1274
1275  // Trim whichever stack we just pushed to to max cache length.
1276  trimCacheStack(pushStack, pjax.defaults.maxCacheLength)
1277}
1278
1279// Trim a cache stack (either cacheBackStack or cacheForwardStack) to be no
1280// longer than the specified length, deleting cached DOM elements as necessary.
1281//
1282// stack  - Array of state IDs
1283// length - Maximum length to trim to
1284//
1285// Returns nothing.
1286function trimCacheStack(stack, length) {
1287  while (stack.length > length)
1288    delete cacheMapping[stack.shift()]
1289}
1290
1291// Public: Find version identifier for the initial page load.
1292//
1293// Returns String version or undefined.
1294function findVersion() {
1295  return $('meta').filter(function() {
1296    var name = $(this).attr('http-equiv')
1297    return name && name.toUpperCase() === 'X-PJAX-VERSION'
1298  }).attr('content')
1299}
1300
1301// Install pjax functions on $.pjax to enable pushState behavior.
1302//
1303// Does nothing if already enabled.
1304//
1305// Examples
1306//
1307//     $.pjax.enable()
1308//
1309// Returns nothing.
1310function enable() {
1311  $.fn.pjax = fnPjax
1312  $.pjax = pjax
1313  $.pjax.enable = $.noop
1314  $.pjax.disable = disable
1315  $.pjax.click = handleClick
1316  $.pjax.submit = handleSubmit
1317  $.pjax.reload = pjaxReload
1318  $.pjax.defaults = {
1319    timeout: 650,
1320    push: true,
1321    replace: false,
1322    type: 'GET',
1323    dataType: 'html',
1324    scrollTo: 0,
1325    maxCacheLength: 20,
1326    version: findVersion
1327  }
1328  $(window).on('popstate.pjax', onPjaxPopstate)
1329}
1330
1331// Disable pushState behavior.
1332//
1333// This is the case when a browser doesn't support pushState. It is
1334// sometimes useful to disable pushState for debugging on a modern
1335// browser.
1336//
1337// Examples
1338//
1339//     $.pjax.disable()
1340//
1341// Returns nothing.
1342function disable() {
1343  $.fn.pjax = function() { return this }
1344  $.pjax = fallbackPjax
1345  $.pjax.enable = enable
1346  $.pjax.disable = $.noop
1347  $.pjax.click = $.noop
1348  $.pjax.submit = $.noop
1349  $.pjax.reload = function() { window.location.reload() }
1350
1351  $(window).off('popstate.pjax', onPjaxPopstate)
1352}
1353
1354
1355// Add the state property to jQuery's event object so we can use it in
1356// $(window).bind('popstate')
1357if ( $.inArray('state', $.event.props) < 0 )
1358  $.event.props.push('state')
1359
1360// Is pjax supported by this browser?
1361$.support.pjax =
1362  window.history && window.history.pushState && window.history.replaceState &&
1363  // pushState isn't reliable on iOS until 5.
1364  !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/)
1365
1366$.support.pjax ? enable() : disable()
1367
1368})(jQuery);
1369
1370/*
1371 * jQuery WidowFix Plugin
1372 * http://matthewlein.com/widowfix/
1373 * Copyright (c) 2010 Matthew Lein
1374 * Version: 1.3.2 (7/23/2011)
1375 * Dual licensed under the MIT and GPL licenses
1376 * Requires: jQuery v1.4 or later
1377 */
1378
1379(function(a){jQuery.fn.widowFix=function(d){var c={letterLimit:null,prevLimit:null,linkFix:false,dashes:false};var b=a.extend(c,d);if(this.length){return this.each(function(){var i=a(this);var n;if(b.linkFix){var h=i.find("a:last");h.wrap("<var>");var e=a("var").html();n=h.contents()[0];h.contents().unwrap()}var f=a(this).html().split(" "),m=f.pop();if(f.length<=1){return}function k(){if(m===""){m=f.pop();k()}}k();if(b.dashes){var j=["-","–","—"];a.each(j,function(o,p){if(m.indexOf(p)>0){m='<span style="white-space:nowrap;">'+m+"</span>";return false}})}var l=f[f.length-1];if(b.linkFix){if(b.letterLimit!==null&&n.length>=b.letterLimit){i.find("var").each(function(){a(this).contents().replaceWith(e);a(this).contents().unwrap()});return}else{if(b.prevLimit!==null&&l.length>=b.prevLimit){i.find("var").each(function(){a(this).contents().replaceWith(e);a(this).contents().unwrap()});return}}}else{if(b.letterLimit!==null&&m.length>=b.letterLimit){return}else{if(b.prevLimit!==null&&l.length>=b.prevLimit){return}}}var g=f.join(" ")+"&nbsp;"+m;i.html(g);if(b.linkFix){i.find("var").each(function(){a(this).contents().replaceWith(e);a(this).contents().unwrap()})}})}}})(jQuery);
1380/**
1381 * @license
1382 * Copyright 2016 Google Inc. All Rights Reserved.
1383 *
1384 * Licensed under the Apache License, Version 2.0 (the "License");
1385 * you may not use this file except in compliance with the License.
1386 * You may obtain a copy of the License at
1387 *
1388 *     http://www.apache.org/licenses/LICENSE-2.0
1389 *
1390 * Unless required by applicable law or agreed to in writing, software
1391 * distributed under the License is distributed on an "AS IS" BASIS,
1392 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1393 * See the License for the specific language governing permissions and
1394 * limitations under the License.
1395 */
1396
1397/*! autotrack.js v1.1.0 */
1398!function t(e,i,n){function s(o,a){if(!i[o]){if(!e[o]){var l="function"==typeof require&&require;if(!a&&l)return l(o,!0);if(r)return r(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var c=i[o]={exports:{}};e[o][0].call(c.exports,function(t){var i=e[o][1][t];return s(i?i:t)},c,c.exports,t,e,i,n)}return i[o].exports}for(var r="function"==typeof require&&require,o=0;o<n.length;o++)s(n[o]);return s}({1:[function(t,e,i){e.exports={VERSION:"1.0.0",DEV_ID:"i5iSjo",VERSION_PARAM:"&_av",USAGE_PARAM:"&_au",NULL_DIMENSION:"(not set)"}},{}],2:[function(t,e,i){function n(){console.error("Warning! Requiring the `autotrack` plugin no longer requires  all sub-plugins by default.\nSee https://goo.gl/XsXPg5 for details.")}var s=t("../provide");s("autotrack",n)},{"../provide":12}],3:[function(t,e,i){function n(t,e){l.track(t,l.plugins.CLEAN_URL_TRACKER),this.opts=s({stripQuery:!1,queryDimensionIndex:null,indexFilename:null,trailingSlash:null},e),this.tracker=t,this.overrideTrackerBuildHitTask()}var s=t("object-assign"),r=t("dom-utils/lib/parse-url"),o=t("../constants"),a=t("../provide"),l=t("../usage");n.prototype.cleanUrlTask=function(t){var e=t.get("location"),i=t.get("page"),n=r(i||e),s=n.pathname,a=s;if(this.opts.indexFilename){var l=a.split("/");this.opts.indexFilename==l[l.length-1]&&(l[l.length-1]="",a=l.join("/"))}if("remove"==this.opts.trailingSlash)a=a.replace(/\/+$/,"");else if("add"==this.opts.trailingSlash){var h=/\.\w+$/.test(a);h||"/"==a.substr(-1)||(a+="/")}this.opts.stripQuery&&this.opts.queryDimensionIndex&&t.set("dimension"+this.opts.queryDimensionIndex,n.query||o.NULL_DIMENSION),t.set("page",a+(this.opts.stripQuery?"":n.search))},n.prototype.overrideTrackerBuildHitTask=function(){this.originalTrackerBuildHitTask=this.tracker.get("buildHitTask"),this.tracker.set("buildHitTask",function(t){this.cleanUrlTask(t),this.originalTrackerBuildHitTask(t)}.bind(this))},n.prototype.remove=function(){this.tracker.set("sendHitTask",this.originalTrackerSendHitTask)},a("cleanUrlTracker",n)},{"../constants":1,"../provide":12,"../usage":13,"dom-utils/lib/parse-url":22,"object-assign":23}
1398],4:[function(t,e,i){function n(t,e){if(a.track(t,a.plugins.EVENT_TRACKER),window.addEventListener){this.opts=s({events:["click"],fieldsObj:{},attributePrefix:"ga-",hitFilter:null},e),this.tracker=t,this.handleEvents=this.handleEvents.bind(this);var i="["+this.opts.attributePrefix+"on]";this.delegates={},this.opts.events.forEach(function(t){this.delegates[t]=r(document,t,i,this.handleEvents,{composed:!0,useCapture:!0})}.bind(this))}}var s=t("object-assign"),r=t("dom-utils/lib/delegate"),o=t("../provide"),a=t("../usage"),l=t("../utilities").createFieldsObj,h=t("../utilities").getAttributeFields;n.prototype.handleEvents=function(t,e){var i=this.opts.attributePrefix;if(t.type==e.getAttribute(i+"on")){var n={transport:"beacon"},r=h(e,i),o=s({},this.opts.fieldsObj,r),a=r.hitType||"event";this.tracker.send(a,l(n,o,this.tracker,this.opts.hitFilter,e))}},n.prototype.remove=function(){Object.keys(this.delegates).forEach(function(t){this.delegates[t].destroy()}.bind(this))},o("eventTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"dom-utils/lib/delegate":18,"object-assign":23}],5:[function(t,e,i){function n(t,e){l.track(t,l.plugins.IMPRESSION_TRACKER),window.IntersectionObserver&&window.MutationObserver&&(this.opts=o({elements:null,rootMargin:"0px",fieldsObj:{},attributePrefix:"ga-",hitFilter:null},e),this.tracker=t,this.handleDomMutations=this.handleDomMutations.bind(this),this.handleIntersectionChanges=this.handleIntersectionChanges.bind(this),this.handleDomElementAdded=this.handleDomElementAdded.bind(this),this.handleDomElementRemoved=this.handleDomElementRemoved.bind(this),this.items=[],this.elementMap={},this.thresholdMap={},c(function(){this.observeElements(this.opts.elements)}.bind(this)))}function s(t,e){if(0===t){var i=e.intersectionRect;return i.top>0||i.bottom>0||i.left>0||i.right>0}return e.intersectionRatio>=t}function r(t){return o({threshold:0,trackFirstImpressionOnly:!0},"string"==typeof t?{id:t}:t)}var o=t("object-assign"),a=t("../provide"),l=t("../usage"),h=t("../utilities").createFieldsObj,c=t("../utilities").domReady,d=t("../utilities").getAttributeFields;n.prototype.observeElements=function(t){var e=this.deriveDataFromElements(t);this.items=this.items.concat(e.items),this.elementMap=o({},e.elementMap,this.elementMap),this.thresholdMap=o({},e.thresholdMap,this.thresholdMap),e.items.forEach(function(t){var e=this.thresholdMap[t.threshold]=this.thresholdMap[t.threshold]||new IntersectionObserver(this.handleIntersectionChanges,{rootMargin:this.opts.rootMargin,threshold:[+t.threshold]}),i=this.elementMap[t.id]||(this.elementMap[t.id]=document.getElementById(t.id));i&&e.observe(i)}.bind(this)),this.mutationObserver||(this.mutationObserver=new MutationObserver(this.handleDomMutations),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0})),requestAnimationFrame(function(){})},n.prototype.unobserveElements=function(t){var e=[],i=[];if(this.items.forEach(function(n){var s=t.some(function(t){var e=r(t);return e.id===n.id&&e.threshold===n.threshold&&e.trackFirstImpressionOnly===n.trackFirstImpressionOnly});s?i.push(n):e.push(n)}),!e.length)return this.unobserveAllElements();var n=this.deriveDataFromElements(e),s=this.deriveDataFromElements(i);this.items=n.items,this.elementMap=n.elementMap,this.thresholdMap=n.thresholdMap,i.forEach(function(t){if(!n.elementMap[t.id]){var e=s.thresholdMap[t.threshold],i=s.elementMap[t.id];i&&e.unobserve(i),n.thresholdMap[t.threshold]||s.thresholdMap[t.threshold].disconnect()}})},n.prototype.unobserveAllElements=function(){Object.keys(this.thresholdMap).forEach(function(t){this.thresholdMap[t].disconnect()}.bind(this)),this.mutationObserver.disconnect(),this.mutationObserver=null,this.items=[],this.elementMap={},this.thresholdMap={}},n.prototype.deriveDataFromElements=function(t){var e=[],i={},n={};return t.length&&t.forEach(function(t){var s=r(t);e.push(s),n[s.id]=this.elementMap[s.id]||null,i[s.threshold]=this.thresholdMap[s.threshold]||null}.bind(this)),{items:e,elementMap:n,thresholdMap:i}},n.prototype.observeElement=function(t){var e=this.elementMap[t]||(this.elementMap[t]=document.getElementById(t));e&&this.intersectionObserver.observe(e)},n.prototype.handleDomMutations=function(t){for(var e,i=0;e=t[i];i++){for(var n,s=0;n=e.removedNodes[s];s++)this.walkNodeTree(n,this.handleDomElementRemoved);for(var r,o=0;r=e.addedNodes[o];o++)this.walkNodeTree(r,this.handleDomElementAdded)}},n.prototype.walkNodeTree=function(t,e){1==t.nodeType&&t.id in this.elementMap&&e(t.id);for(var i,n=0;i=t.childNodes[n];n++)this.walkNodeTree(i,e)},n.prototype.handleIntersectionChanges=function(t){for(var e,i=[],n=0;e=t[n];n++)for(var r,o=0;r=this.items[o];o++)e.target.id===r.id&&s(r.threshold,e)&&(this.handleImpression(r.id),r.trackFirstImpressionOnly&&i.push(r));i.length&&this.unobserveElements(i)},n.prototype.handleImpression=function(t){var e=document.getElementById(t),i={transport:"beacon",eventCategory:"Viewport",eventAction:"impression",eventLabel:t},n=o({},this.opts.fieldsObj,d(e,this.opts.attributePrefix));this.tracker.send("event",h(i,n,this.tracker,this.opts.hitFilter,e))},n.prototype.handleDomElementAdded=function(t){var e=this.elementMap[t]=document.getElementById(t);
1398this.items.forEach(function(i){t==i.id&&this.thresholdMap[i.threshold].observe(e)}.bind(this))},n.prototype.handleDomElementRemoved=function(t){var e=this.elementMap[t];this.items.forEach(function(i){t==i.id&&this.thresholdMap[i.threshold].unobserve(e)}.bind(this)),this.elementMap[t]=null},n.prototype.remove=function(){this.unobserveAllElements()},a("impressionTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"object-assign":23}],6:[function(t,e,i){function n(t,e){h.track(t,h.plugins.MEDIA_QUERY_TRACKER),window.matchMedia&&(this.opts=r({definitions:null,changeTemplate:this.changeTemplate,changeTimeout:1e3,fieldsObj:{},hitFilter:null},e),d(this.opts.definitions)&&(this.opts.definitions=u(this.opts.definitions),this.tracker=t,this.changeListeners=[],this.processMediaQueries()))}function s(t){return p[t]?p[t]:(p[t]=window.matchMedia(t),p[t])}var r=t("object-assign"),o=t("debounce"),a=t("../constants"),l=t("../provide"),h=t("../usage"),c=t("../utilities").createFieldsObj,d=t("../utilities").isObject,u=t("../utilities").toArray,p={};n.prototype.processMediaQueries=function(){this.opts.definitions.forEach(function(t){if(t.name&&t.dimensionIndex){var e=this.getMatchName(t);this.tracker.set("dimension"+t.dimensionIndex,e),this.addChangeListeners(t)}}.bind(this))},n.prototype.getMatchName=function(t){var e;return t.items.forEach(function(t){s(t.media).matches&&(e=t)}),e?e.name:a.NULL_DIMENSION},n.prototype.addChangeListeners=function(t){t.items.forEach(function(e){var i=s(e.media),n=o(function(){this.handleChanges(t)}.bind(this),this.opts.changeTimeout);i.addListener(n),this.changeListeners.push({mql:i,fn:n})}.bind(this))},n.prototype.handleChanges=function(t){var e=this.getMatchName(t),i=this.tracker.get("dimension"+t.dimensionIndex);if(e!==i){this.tracker.set("dimension"+t.dimensionIndex,e);var n={eventCategory:t.name,eventAction:"change",eventLabel:this.opts.changeTemplate(i,e)};this.tracker.send("event",c(n,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))}},n.prototype.remove=function(){for(var t,e=0;t=this.changeListeners[e];e++)t.mql.removeListener(t.fn)},n.prototype.changeTemplate=function(t,e){return t+" => "+e},l("mediaQueryTracker",n)},{"../constants":1,"../provide":12,"../usage":13,"../utilities":14,debounce:16,"object-assign":23}],7:[function(t,e,i){function n(t,e){l.track(t,l.plugins.OUTBOUND_FORM_TRACKER),window.addEventListener&&(this.opts=s({formSelector:"form",shouldTrackOutboundForm:this.shouldTrackOutboundForm,fieldsObj:{},attributePrefix:"ga-",hitFilter:null},e),this.tracker=t,this.delegate=r(document,"submit","form",this.handleFormSubmits.bind(this),{composed:!0,useCapture:!0}))}var s=t("object-assign"),r=t("dom-utils/lib/delegate"),o=t("dom-utils/lib/parse-url"),a=t("../provide"),l=t("../usage"),h=t("../utilities").createFieldsObj,c=t("../utilities").getAttributeFields,d=t("../utilities").withTimeout;n.prototype.handleFormSubmits=function(t,e){var i=o(e.action).href,n={transport:"beacon",eventCategory:"Outbound Form",eventAction:"submit",eventLabel:i};if(this.opts.shouldTrackOutboundForm(e,o)){navigator.sendBeacon||(t.preventDefault(),n.hitCallback=d(function(){e.submit()}));var r=s({},this.opts.fieldsObj,c(e,this.opts.attributePrefix));this.tracker.send("event",h(n,r,this.tracker,this.opts.hitFilter,e))}},n.prototype.shouldTrackOutboundForm=function(t,e){var i=e(t.action);return i.hostname!=location.hostname&&"http"==i.protocol.slice(0,4)},n.prototype.remove=function(){this.delegate.destroy()},a("outboundFormTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"dom-utils/lib/delegate":18,"dom-utils/lib/parse-url":22,"object-assign":23}],8:[function(t,e,i){function n(t,e){l.track(t,l.plugins.OUTBOUND_LINK_TRACKER),window.addEventListener&&(this.opts=s({events:["click"],linkSelector:"a, area",shouldTrackOutboundLink:this.shouldTrackOutboundLink,fieldsObj:{},attributePrefix:"ga-",hitFilter:null},e),this.tracker=t,this.handleLinkInteractions=this.handleLinkInteractions.bind(this),this.delegates={},this.opts.events.forEach(function(t){this.delegates[t]=r(document,t,this.opts.linkSelector,this.handleLinkInteractions,{composed:!0,useCapture:!0})}.bind(this)))}var s=t("object-assign"),r=t("dom-utils/lib/delegate"),o=t("dom-utils/lib/parse-url"),a=t("../provide"),l=t("../usage"),h=t("../utilities").createFieldsObj,c=t("../utilities").getAttributeFields;n.prototype.handleLinkInteractions=function(t,e){if(this.opts.shouldTrackOutboundLink(e,o)){navigator.sendBeacon||(e.target="_blank");var i=e.getAttribute("href")||e.getAttribute("xlink:href"),n=o(i),r={transport:"beacon",eventCategory:"Outbound Link",eventAction:t.type,eventLabel:n.href},a=s({},this.opts.fieldsObj,c(e,this.opts.attributePrefix));this.tracker.send("event",h(r,a,this.tracker,this.opts.hitFilter,e))}},n.prototype.shouldTrackOutboundLink=function(t,e){var i=t.getAttribute("href")||t.getAttribute("xlink:href"),n=e(i);return n.hostname!=location.hostname&&"http"==n.protocol.slice(0,4)},n.prototype.remove=function(){Object.keys(this.delegates).forEac
1398h(function(t){this.delegates[t].destroy()}.bind(this))},a("outboundLinkTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"dom-utils/lib/delegate":18,"dom-utils/lib/parse-url":22,"object-assign":23}],9:[function(t,e,i){function n(t,e){o.track(t,o.plugins.PAGE_VISIBILITY_TRACKER),window.addEventListener&&(this.opts=s({sessionTimeout:h,changeTemplate:this.changeTemplate,hiddenMetricIndex:null,visibleMetricIndex:null,fieldsObj:{},hitFilter:null},e),this.tracker=t,this.visibilityState=document.visibilityState,this.lastVisibilityChangeTime=+new Date,this.handleVisibilityStateChange=this.handleVisibilityStateChange.bind(this),this.overrideTrackerSendMethod(),this.overrideTrackerSendHitTask(),document.addEventListener("visibilitychange",this.handleVisibilityStateChange))}var s=t("object-assign"),r=t("../provide"),o=t("../usage"),a=t("../utilities").createFieldsObj,l=t("../utilities").isObject,h=30;n.prototype.handleVisibilityStateChange=function(){var t;if(this.prevVisibilityState=this.visibilityState,this.visibilityState=document.visibilityState,this.sessionHasTimedOut()){if("hidden"==this.visibilityState)return;"visible"==this.visibilityState&&(t={transport:"beacon"},this.tracker.send("pageview",a(t,this.opts.fieldsObj,this.tracker,this.opts.hitFilter)))}else{var e=Math.round((new Date-this.lastVisibilityChangeTime)/1e3)||1;t={transport:"beacon",eventCategory:"Page Visibility",eventAction:"change",eventLabel:this.opts.changeTemplate(this.prevVisibilityState,this.visibilityState),eventValue:e},"hidden"==this.visibilityState&&(t.nonInteraction=!0);var i=this.opts[this.prevVisibilityState+"MetricIndex"];i&&(t["metric"+i]=e),this.tracker.send("event",a(t,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))}this.lastVisibilityChangeTime=+new Date},n.prototype.sessionHasTimedOut=function(){var t=(new Date-this.lastHitTime)/6e4;return this.opts.sessionTimeout<t},n.prototype.overrideTrackerSendMethod=function(){this.originalTrackerSendMethod=this.tracker.send,this.tracker.send=function(){var t=Array.prototype.slice.call(arguments),e=t[0],i=l(e)?e.hitType:e,n="pageview"==i;if(!n&&this.sessionHasTimedOut()){var s={transport:"beacon"};this.originalTrackerSendMethod.call(this.tracker,"pageview",a(s,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))}this.originalTrackerSendMethod.apply(this.tracker,t)}.bind(this)},n.prototype.overrideTrackerSendHitTask=function(){this.originalTrackerSendHitTask=this.tracker.get("sendHitTask"),this.lastHitTime=+new Date,this.tracker.set("sendHitTask",function(t){this.originalTrackerSendHitTask(t),this.lastHitTime=+new Date}.bind(this))},n.prototype.changeTemplate=function(t,e){return t+" => "+e},n.prototype.remove=function(){this.tracker.set("sendHitTask",this.originalTrackerSendHitTask),this.tracker.send=this.originalTrackerSendMethod,document.removeEventListener("visibilitychange",this.handleVisibilityStateChange)},r("pageVisibilityTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"object-assign":23}],10:[function(t,e,i){function n(t,e){o.track(t,o.plugins.SOCIAL_WIDGET_TRACKER),window.addEventListener&&(this.opts=s({fieldsObj:{},hitFilter:null},e),this.tracker=t,this.addWidgetListeners=this.addWidgetListeners.bind(this),this.addTwitterEventHandlers=this.addTwitterEventHandlers.bind(this),this.handleTweetEvents=this.handleTweetEvents.bind(this),this.handleFollowEvents=this.handleFollowEvents.bind(this),this.handleLikeEvents=this.handleLikeEvents.bind(this),this.handleUnlikeEvents=this.handleUnlikeEvents.bind(this),"complete"!=document.readyState?window.addEventListener("load",this.addWidgetListeners):this.addWidgetListeners())}var s=t("object-assign"),r=t("../provide"),o=t("../usage"),a=t("../utilities").createFieldsObj;n.prototype.addWidgetListeners=function(){window.FB&&this.addFacebookEventHandlers(),window.twttr&&this.addTwitterEventHandlers()},n.prototype.addTwitterEventHandlers=function(){try{twttr.ready(function(){twttr.events.bind("tweet",this.handleTweetEvents),twttr.events.bind("follow",this.handleFollowEvents)}.bind(this))}catch(t){}},n.prototype.removeTwitterEventHandlers=function(){try{twttr.ready(function(){twttr.events.unbind("tweet",this.handleTweetEvents),twttr.events.unbind("follow",this.handleFollowEvents)}.bind(this))}catch(t){}},n.prototype.addFacebookEventHandlers=function(){try{FB.Event.subscribe("edge.create",this.handleLikeEvents),FB.Event.subscribe("edge.remove",this.handleUnlikeEvents)}catch(t){}},n.prototype.removeFacebookEventHandlers=function(){try{FB.Event.unsubscribe("edge.create",this.handleLikeEvents),FB.Event.unsubscribe("edge.remove",this.handleUnlikeEvents)}catch(t){}}
1398,n.prototype.handleTweetEvents=function(t){if("tweet"==t.region){var e=t.data.url||t.target.getAttribute("data-url")||location.href,i={transport:"beacon",socialNetwork:"Twitter",socialAction:"tweet",socialTarget:e};this.tracker.send("social",a(i,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))}},n.prototype.handleFollowEvents=function(t){if("follow"==t.region){var e=t.data.screen_name||t.target.getAttribute("data-screen-name"),i={transport:"beacon",socialNetwork:"Twitter",socialAction:"follow",socialTarget:e};this.tracker.send("social",a(i,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))}},n.prototype.handleLikeEvents=function(t){var e={transport:"beacon",socialNetwork:"Facebook",socialAction:"like",socialTarget:t};this.tracker.send("social",a(e,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))},n.prototype.handleUnlikeEvents=function(t){var e={transport:"beacon",socialNetwork:"Facebook",socialAction:"unlike",socialTarget:t};this.tracker.send("social",a(e,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))},n.prototype.remove=function(){window.removeEventListener("load",this.addWidgetListeners),this.removeFacebookEventHandlers(),this.removeTwitterEventHandlers()},r("socialWidgetTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"object-assign":23}],11:[function(t,e,i){function n(t,e){a.track(t,a.plugins.URL_CHANGE_TRACKER),history.pushState&&window.addEventListener&&(this.opts=r({shouldTrackUrlChange:this.shouldTrackUrlChange,fieldsObj:{},hitFilter:null},e),this.tracker=t,this.path=s(),this.updateTrackerData=this.updateTrackerData.bind(this),this.originalPushState=history.pushState,history.pushState=function(t,e){h(t)&&e&&(t.title=e),this.originalPushState.apply(history,arguments),this.updateTrackerData()}.bind(this),this.originalReplaceState=history.replaceState,history.replaceState=function(t,e){h(t)&&e&&(t.title=e),this.originalReplaceState.apply(history,arguments),this.updateTrackerData(!1)}.bind(this),window.addEventListener("popstate",this.updateTrackerData))}function s(){return location.pathname+location.search}var r=t("object-assign"),o=t("../provide"),a=t("../usage"),l=t("../utilities").createFieldsObj,h=t("../utilities").isObject;n.prototype.updateTrackerData=function(t){t=t!==!1,setTimeout(function(){var e=this.path,i=s();if(e!=i&&this.opts.shouldTrackUrlChange.call(this,i,e)&&(this.path=i,this.tracker.set({page:i,title:h(history.state)&&history.state.title||document.title}),t)){var n={transport:"beacon"};this.tracker.send("pageview",l(n,this.opts.fieldsObj,this.tracker,this.opts.hitFilter))}}.bind(this),0)},n.prototype.shouldTrackUrlChange=function(t,e){return t&&e},n.prototype.remove=function(){window.removeEventListener("popstate",this.updateTrackerData),history.replaceState=this.originalReplaceState,history.pushState=this.originalPushState,this.tracker=null,this.opts=null,this.path=null,this.updateTrackerData=null,this.originalReplaceState=null,this.originalPushState=null},o("urlChangeTracker",n)},{"../provide":12,"../usage":13,"../utilities":14,"object-assign":23}],12:[function(t,e,i){var n=t("./constants"),s=t("./utilities");(window.gaDevIds=window.gaDevIds||[]).push(n.DEV_ID),e.exports=function(t,e){var i=window.GoogleAnalyticsObject||"ga";window[i]=window[i]||function(){(window[i].q=window[i].q||[]).push(arguments)},window[i]("provide",t,e),window.gaplugins=window.gaplugins||{},window.gaplugins[s.capitalize(t)]=e}},{"./constants":1,"./utilities":14}],13:[function(t,e,i){function n(t){return parseInt(t||"0",16).toString(2)}function s(t){return parseInt(t||"0",2).toString(16)}function r(t,e){if(t.length<e)for(var i=e-t.length;i;)t="0"+t,i--;return t}function o(t,e){return t.substr(0,e)+1+t.substr(e+1)}function a(t,e){var i=t.get(h.USAGE_PARAM),a=r(n(i),d);a=o(a,d-e),t.set(h.USAGE_PARAM,s(a))}function l(t){t.set(h.VERSION_PARAM,h.VERSION)}var h=t("./constants"),c={CLEAN_URL_TRACKER:1,EVENT_TRACKER:2,IMPRESSION_TRACKER:3,MEDIA_QUERY_TRACKER:4,OUTBOUND_FORM_TRACKER:5,OUTBOUND_LINK_TRACKER:6,PAGE_VISIBILITY_TRACKER:7,SOCIAL_WIDGET_TRACKER:8,URL_CHANGE_TRACKER:9},d=9;e.exports={track:function(t,e){l(t),a(t,e)},plugins:c}},{"./constants":1}
1398],14:[function(t,e,i){var n=t("object-assign"),s=t("dom-utils/lib/get-attributes"),r={createFieldsObj:function(t,e,i,s,r){if("function"==typeof s){var o=i.get("buildHitTask");return{buildHitTask:function(i){i.set(t,null,!0),i.set(e,null,!0),s(i,r),o(i)}}}return n({},t,e)},getAttributeFields:function(t,e){var i=s(t),n={};return Object.keys(i).forEach(function(t){if(0===t.indexOf(e)&&t!=e+"on"){var s=i[t];"true"==s&&(s=!0),"false"==s&&(s=!1);var o=r.camelCase(t.slice(e.length));n[o]=s}}),n},domReady:function(t){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function e(){document.removeEventListener("DOMContentLoaded",e),t()}):t()},withTimeout:function(t,e){var i=!1,n=function(){i||(i=!0,t())};return setTimeout(n,e||2e3),n},camelCase:function(t){return t.replace(/[\-\_]+(\w?)/g,function(t,e){return e.toUpperCase()})},capitalize:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},isObject:function(t){return"object"==typeof t&&null!==t},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},toArray:function(t){return r.isArray(t)?t:[t]}};e.exports=r},{"dom-utils/lib/get-attributes":19,"object-assign":23}],15:[function(t,e,i){function n(){return(new Date).getTime()}e.exports=Date.now||n},{}],16:[function(t,e,i){var n=t("date-now");e.exports=function(t,e,i){function s(){var c=n()-l;c<e&&c>0?r=setTimeout(s,e-c):(r=null,i||(h=t.apply(a,o),r||(a=o=null)))}var r,o,a,l,h;return null==e&&(e=100),function(){a=this,o=arguments,l=n();var c=i&&!r;return r||(r=setTimeout(s,e)),c&&(h=t.apply(a,o),a=o=null),h}}},{"date-now":15}],17:[function(t,e,i){var n=t("./matches"),s=t("./parents");e.exports=function(t,e,i){if(t&&1==t.nodeType&&e)for(var r,o=(i?[t]:[]).concat(s(t)),a=0;r=o[a];a++)if(n(r,e))return r}},{"./matches":20,"./parents":21}],18:[function(t,e,i){var n=t("./closest"),s=t("./matches");e.exports=function(t,e,i,r,o){o=o||{};var a=function(t){if(o.composed&&"function"==typeof t.composedPath)for(var e,a=t.composedPath(),l=0;e=a[l];l++)1==e.nodeType&&s(e,i)&&(h=e);else var h=n(t.target,i,!0);h&&r.call(h,t,h)};return t.addEventListener(e,a,o.useCapture),{destroy:function(){t.removeEventListener(e,a,o.useCapture)}}}},{"./closest":17,"./matches":20}],19:[function(t,e,i){e.exports=function(t){var e={};if(!t||1!=t.nodeType)return e;var i=t.attributes;if(0===i.length)return{};for(var n,s=0;n=i[s];s++)e[n.name]=n.value;return e}},{}],20:[function(t,e,i){function n(t,e){if("string"!=typeof e)return!1;if(r)return r.call(t,e);for(var i,n=t.parentNode.querySelectorAll(e),s=0;i=n[s];s++)if(i==t)return!0;return!1}var s=window.Element.prototype,r=s.matches||s.matchesSelector||s.webkitMatchesSelector||s.mozMatchesSelector||s.msMatchesSelector||s.oMatchesSelector;e.exports=function(t,e){if(t&&1==t.nodeType&&e){if("string"==typeof e||1==e.nodeType)return t==e||n(t,e);if("length"in e)for(var i,s=0;i=e[s];s++)if(t==i||n(t,i))return!0}return!1}},{}],21:[function(t,e,i){e.exports=function(t){for(var e=[];t&&t.parentNode&&1==t.parentNode.nodeType;)e.push(t=t.parentNode);return e}},{}],22:[function(t,e,i){var n="80",s="443",r=RegExp(":("+n+"|"+s+")$"),o=document.createElement("a"),a={};e.exports=function t(e){if(e=e&&"."!=e?e:location.href,a[e])return a[e];if(o.href=e,"."==e.charAt(0)||"/"==e.charAt(0))return t(o.href);var i=o.port==n||o.port==s?"":o.port;
1398i="0"==i?"":i;var l=o.host.replace(r,""),h=o.origin?o.origin:o.protocol+"//"+l,c="/"==o.pathname.charAt(0)?o.pathname:"/"+o.pathname;return a[e]={hash:o.hash,host:l,hostname:o.hostname,href:o.href,origin:h,pathname:c,port:i,protocol:o.protocol,search:o.search,fragment:o.hash.slice(1),path:c+o.search,query:o.search.slice(1)}}},{}],23:[function(t,e,i){"use strict";function n(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function s(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},i=0;i<10;i++)e["_"+String.fromCharCode(i)]=i;var n=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==n.join(""))return!1;var s={};return"abcdefghijklmnopqrst".split("").forEach(function(t){s[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},s)).join("")}catch(t){return!1}}var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=s()?Object.assign:function(t,e){for(var i,s,l=n(t),h=1;h<arguments.length;h++){i=Object(arguments[h]);for(var c in i)o.call(i,c)&&(l[c]=i[c]);if(r){s=r(i);for(var d=0;d<s.length;
1398d++)a.call(i,s[d])&&(l[s[d]]=i[s[d]])}}return l}},{}],24:[function(t,e,i){t("./plugins/clean-url-tracker"),t("./plugins/event-tracker"),t("./plugins/impression-tracker"),t("./plugins/media-query-tracker"),t("./plugins/outbound-form-tracker"),t("./plugins/outbound-link-tracker"),t("./plugins/page-visibility-tracker"),t("./plugins/social-widget-tracker"),t("./plugins/url-change-tracker"),t("./plugins/autotrack")},{"./plugins/autotrack":2,"./plugins/clean-url-tracker":3,"./plugins/event-tracker":4,"./plugins/impression-tracker":5,"./plugins/media-query-tracker":6,"./plugins/outbound-form-tracker":7,"./plugins/outbound-link-tracker":8,"./plugins/page-visibility-tracker":9,"./plugins/social-widget-tracker":10,"./plugins/url-change-tracker":11}]},{},[24]);
1399//# sourceMappingURL=autotrack.js.map

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.