{"version":3,"file":"wwwroot/dist/compiled.js","mappings":"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","sources":["webpack://sublime.site/./Sites/BSAB/Static/Scripts/application.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components|sync|/.(js%7Cts)$","webpack://sublime.site/./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components/_expandable.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components/_form.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components/_import-jquery.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components/_main.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components/_navigation.js","webpack://sublime.site/./Sites/BSAB/Static/Scripts/Components/_slick.js","webpack://sublime.site/./node_modules/jquery/dist/jquery.js","webpack://sublime.site/./node_modules/slick-carousel/slick/slick.js","webpack://sublime.site/webpack/bootstrap","webpack://sublime.site/webpack/runtime/compat get default export","webpack://sublime.site/webpack/runtime/define property getters","webpack://sublime.site/webpack/runtime/hasOwnProperty shorthand","webpack://sublime.site/webpack/runtime/make namespace object"],"sourcesContent":["/* Should never contain any specific JavaScript functions */\r\n\r\nconst cache = {};\r\n\r\nvar importAll = (request) => {\r\n request.keys().forEach((key) => (cache[key] = request(key)));\r\n};\r\n\r\nimportAll(require.context('./Components', true, /\\.(js|ts)$/));","var map = {\n\t\"./_expandable.js\": 51,\n\t\"./_fancybox.js\": 289,\n\t\"./_form.js\": 399,\n\t\"./_import-jquery.js\": 295,\n\t\"./_main.js\": 639,\n\t\"./_navigation.js\": 480,\n\t\"./_slick.js\": 808\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 714;","// ==================================================\n// fancyBox v3.5.7\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2019 fancyApps\n//\n// ==================================================\n(function (window, document, $, undefined) {\r\n \"use strict\";\r\n\r\n window.console = window.console || {\r\n info: function (stuff) {}\r\n };\r\n\r\n // If there's no jQuery, fancyBox can't work\r\n // =========================================\r\n\r\n if (!$) {\r\n return;\r\n }\r\n\r\n // Check if fancyBox is already initialized\r\n // ========================================\r\n\r\n if ($.fn.fancybox) {\r\n console.info(\"fancyBox already initialized\");\r\n\r\n return;\r\n }\r\n\r\n // Private default settings\r\n // ========================\r\n\r\n var defaults = {\r\n // Close existing modals\r\n // Set this to false if you do not need to stack multiple instances\r\n closeExisting: false,\r\n\r\n // Enable infinite gallery navigation\r\n loop: false,\r\n\r\n // Horizontal space between slides\r\n gutter: 50,\r\n\r\n // Enable keyboard navigation\r\n keyboard: true,\r\n\r\n // Should allow caption to overlap the content\r\n preventCaptionOverlap: true,\r\n\r\n // Should display navigation arrows at the screen edges\r\n arrows: true,\r\n\r\n // Should display counter at the top left corner\r\n infobar: true,\r\n\r\n // Should display close button (using `btnTpl.smallBtn` template) over the content\r\n // Can be true, false, \"auto\"\r\n // If \"auto\" - will be automatically enabled for \"html\", \"inline\" or \"ajax\" items\r\n smallBtn: \"auto\",\r\n\r\n // Should display toolbar (buttons at the top)\r\n // Can be true, false, \"auto\"\r\n // If \"auto\" - will be automatically hidden if \"smallBtn\" is enabled\r\n toolbar: \"auto\",\r\n\r\n // What buttons should appear in the top right corner.\r\n // Buttons will be created using templates from `btnTpl` option\r\n // and they will be placed into toolbar (class=\"fancybox-toolbar\"` element)\r\n buttons: [\r\n \"zoom\",\r\n //\"share\",\r\n \"slideShow\",\r\n //\"fullScreen\",\r\n //\"download\",\r\n \"thumbs\",\r\n \"close\"\r\n ],\r\n\r\n // Detect \"idle\" time in seconds\r\n idleTime: 3,\r\n\r\n // Disable right-click and use simple image protection for images\r\n protect: false,\r\n\r\n // Shortcut to make content \"modal\" - disable keyboard navigtion, hide buttons, etc\r\n modal: false,\r\n\r\n image: {\r\n // Wait for images to load before displaying\r\n // true - wait for image to load and then display;\r\n // false - display thumbnail and load the full-sized image over top,\r\n // requires predefined image dimensions (`data-width` and `data-height` attributes)\r\n preload: false\r\n },\r\n\r\n ajax: {\r\n // Object containing settings for ajax request\r\n settings: {\r\n // This helps to indicate that request comes from the modal\r\n // Feel free to change naming\r\n data: {\r\n fancybox: true\r\n }\r\n }\r\n },\r\n\r\n iframe: {\r\n // Iframe template\r\n tpl: '',\r\n\r\n // Preload iframe before displaying it\r\n // This allows to calculate iframe content width and height\r\n // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n preload: true,\r\n\r\n // Custom CSS styling for iframe wrapping element\r\n // You can use this to set custom iframe dimensions\r\n css: {},\r\n\r\n // Iframe tag attributes\r\n attr: {\r\n scrolling: \"auto\"\r\n }\r\n },\r\n\r\n // For HTML5 video only\r\n video: {\r\n tpl: '\",\r\n format: \"\", // custom video format\r\n autoStart: true\r\n },\r\n\r\n // Default content type if cannot be detected automatically\r\n defaultType: \"image\",\r\n\r\n // Open/close animation type\r\n // Possible values:\r\n // false - disable\r\n // \"zoom\" - zoom images from/to thumbnail\r\n // \"fade\"\r\n // \"zoom-in-out\"\r\n //\r\n animationEffect: \"zoom\",\r\n\r\n // Duration in ms for open/close animation\r\n animationDuration: 366,\r\n\r\n // Should image change opacity while zooming\r\n // If opacity is \"auto\", then opacity will be changed if image and thumbnail have different aspect ratios\r\n zoomOpacity: \"auto\",\r\n\r\n // Transition effect between slides\r\n //\r\n // Possible values:\r\n // false - disable\r\n // \"fade'\r\n // \"slide'\r\n // \"circular'\r\n // \"tube'\r\n // \"zoom-in-out'\r\n // \"rotate'\r\n //\r\n transitionEffect: \"fade\",\r\n\r\n // Duration in ms for transition animation\r\n transitionDuration: 366,\r\n\r\n // Custom CSS class for slide element\r\n slideClass: \"\",\r\n\r\n // Custom CSS class for layout\r\n baseClass: \"\",\r\n\r\n // Base template for layout\r\n baseTpl: '
' +\r\n '
' +\r\n '
' +\r\n '
 / 
' +\r\n '
{{buttons}}
' +\r\n '
{{arrows}}
' +\r\n '
' +\r\n '
' +\r\n \"
\" +\r\n \"
\",\r\n\r\n // Loading indicator template\r\n spinnerTpl: '
',\r\n\r\n // Error message template\r\n errorTpl: '

{{ERROR}}

',\r\n\r\n btnTpl: {\r\n download: '' +\r\n '' +\r\n \"\",\r\n\r\n zoom: '\",\r\n\r\n close: '\",\r\n\r\n // Arrows\r\n arrowLeft: '\",\r\n\r\n arrowRight: '\",\r\n\r\n // This small close button will be appended to your html/inline/ajax content by default,\r\n // if \"smallBtn\" option is not set to false\r\n smallBtn: '\"\r\n },\r\n\r\n // Container is injected into this element\r\n parentEl: \"body\",\r\n\r\n // Hide browser vertical scrollbars; use at your own risk\r\n hideScrollbar: true,\r\n\r\n // Focus handling\r\n // ==============\r\n\r\n // Try to focus on the first focusable element after opening\r\n autoFocus: true,\r\n\r\n // Put focus back to active element after closing\r\n backFocus: true,\r\n\r\n // Do not let user to focus on element outside modal content\r\n trapFocus: true,\r\n\r\n // Module specific options\r\n // =======================\r\n\r\n fullScreen: {\r\n autoStart: false\r\n },\r\n\r\n // Set `touch: false` to disable panning/swiping\r\n touch: {\r\n vertical: true, // Allow to drag content vertically\r\n momentum: true // Continue movement after releasing mouse/touch when panning\r\n },\r\n\r\n // Hash value when initializing manually,\r\n // set `false` to disable hash change\r\n hash: null,\r\n\r\n // Customize or add new media types\r\n // Example:\r\n /*\r\n media : {\r\n youtube : {\r\n params : {\r\n autoplay : 0\r\n }\r\n }\r\n }\r\n */\r\n media: {},\r\n\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000\r\n },\r\n\r\n thumbs: {\r\n autoStart: false, // Display thumbnails on opening\r\n hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n parentEl: \".fancybox-container\", // Container is injected into this element\r\n axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n },\r\n\r\n // Use mousewheel to navigate gallery\r\n // If 'auto' - enabled for images only\r\n wheel: \"auto\",\r\n\r\n // Callbacks\r\n //==========\r\n\r\n // See Documentation/API/Events for more information\r\n // Example:\r\n /*\r\n afterShow: function( instance, current ) {\r\n console.info( 'Clicked element:' );\r\n console.info( current.opts.$orig );\r\n }\r\n */\r\n\r\n onInit: $.noop, // When instance has been initialized\r\n\r\n beforeLoad: $.noop, // Before the content of a slide is being loaded\r\n afterLoad: $.noop, // When the content of a slide is done loading\r\n\r\n beforeShow: $.noop, // Before open animation starts\r\n afterShow: $.noop, // When content is done loading and animating\r\n\r\n beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close.\r\n afterClose: $.noop, // After instance has been closed\r\n\r\n onActivate: $.noop, // When instance is brought to front\r\n onDeactivate: $.noop, // When other instance has been activated\r\n\r\n // Interaction\r\n // ===========\r\n\r\n // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,\r\n // each option can be string or method that returns value.\r\n //\r\n // Possible values:\r\n // \"close\" - close instance\r\n // \"next\" - move to next gallery item\r\n // \"nextOrClose\" - move to next gallery item or close if gallery has only one item\r\n // \"toggleControls\" - show/hide controls\r\n // \"zoom\" - zoom image (if loaded)\r\n // false - do nothing\r\n\r\n // Clicked on the content\r\n clickContent: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n },\r\n\r\n // Clicked on the slide\r\n clickSlide: \"close\",\r\n\r\n // Clicked on the background (backdrop) element;\r\n // if you have not changed the layout, then most likely you need to use `clickSlide` option\r\n clickOutside: \"close\",\r\n\r\n // Same as previous two, but for double click\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false,\r\n\r\n // Custom options when mobile device is detected\r\n // =============================================\r\n\r\n mobile: {\r\n preventCaptionOverlap: false,\r\n idleTime: false,\r\n clickContent: function (current, event) {\r\n return current.type === \"image\" ? \"toggleControls\" : false;\r\n },\r\n clickSlide: function (current, event) {\r\n return current.type === \"image\" ? \"toggleControls\" : \"close\";\r\n },\r\n dblclickContent: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n },\r\n dblclickSlide: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n }\r\n },\r\n\r\n // Internationalization\r\n // ====================\r\n\r\n lang: \"en\",\r\n i18n: {\r\n en: {\r\n CLOSE: \"Close\",\r\n NEXT: \"Next\",\r\n PREV: \"Previous\",\r\n ERROR: \"The requested content cannot be loaded.
Please try again later.\",\r\n PLAY_START: \"Start slideshow\",\r\n PLAY_STOP: \"Pause slideshow\",\r\n FULL_SCREEN: \"Full screen\",\r\n THUMBS: \"Thumbnails\",\r\n DOWNLOAD: \"Download\",\r\n SHARE: \"Share\",\r\n ZOOM: \"Zoom\"\r\n },\r\n de: {\r\n CLOSE: \"Schließen\",\r\n NEXT: \"Weiter\",\r\n PREV: \"Zurück\",\r\n ERROR: \"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.\",\r\n PLAY_START: \"Diaschau starten\",\r\n PLAY_STOP: \"Diaschau beenden\",\r\n FULL_SCREEN: \"Vollbild\",\r\n THUMBS: \"Vorschaubilder\",\r\n DOWNLOAD: \"Herunterladen\",\r\n SHARE: \"Teilen\",\r\n ZOOM: \"Vergrößern\"\r\n }\r\n }\r\n };\r\n\r\n // Few useful variables and methods\r\n // ================================\r\n\r\n var $W = $(window);\r\n var $D = $(document);\r\n\r\n var called = 0;\r\n\r\n // Check if an object is a jQuery object and not a native JavaScript object\r\n // ========================================================================\r\n var isQuery = function (obj) {\r\n return obj && obj.hasOwnProperty && obj instanceof $;\r\n };\r\n\r\n // Handle multiple browsers for \"requestAnimationFrame\" and \"cancelAnimationFrame\"\r\n // ===============================================================================\r\n var requestAFrame = (function () {\r\n return (\r\n window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n }\r\n );\r\n })();\r\n\r\n var cancelAFrame = (function () {\r\n return (\r\n window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n }\r\n );\r\n })();\r\n\r\n // Detect the supported transition-end event property name\r\n // =======================================================\r\n var transitionEnd = (function () {\r\n var el = document.createElement(\"fakeelement\"),\r\n t;\r\n\r\n var transitions = {\r\n transition: \"transitionend\",\r\n OTransition: \"oTransitionEnd\",\r\n MozTransition: \"transitionend\",\r\n WebkitTransition: \"webkitTransitionEnd\"\r\n };\r\n\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n\r\n return \"transitionend\";\r\n })();\r\n\r\n // Force redraw on an element.\r\n // This helps in cases where the browser doesn't redraw an updated element properly\r\n // ================================================================================\r\n var forceRedraw = function ($el) {\r\n return $el && $el.length && $el[0].offsetHeight;\r\n };\r\n\r\n // Exclude array (`buttons`) options from deep merging\r\n // ===================================================\r\n var mergeOpts = function (opts1, opts2) {\r\n var rez = $.extend(true, {}, opts1, opts2);\r\n\r\n $.each(opts2, function (key, value) {\r\n if ($.isArray(value)) {\r\n rez[key] = value;\r\n }\r\n });\r\n\r\n return rez;\r\n };\r\n\r\n // How much of an element is visible in viewport\r\n // =============================================\r\n\r\n var inViewport = function (elem) {\r\n var elemCenter, rez;\r\n\r\n if (!elem || elem.ownerDocument !== document) {\r\n return false;\r\n }\r\n\r\n $(\".fancybox-container\").css(\"pointer-events\", \"none\");\r\n\r\n elemCenter = {\r\n x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\r\n y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\r\n };\r\n\r\n rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem;\r\n\r\n $(\".fancybox-container\").css(\"pointer-events\", \"\");\r\n\r\n return rez;\r\n };\r\n\r\n // Class definition\r\n // ================\r\n\r\n var FancyBox = function (content, opts, index) {\r\n var self = this;\r\n\r\n self.opts = mergeOpts({\r\n index: index\r\n }, $.fancybox.defaults);\r\n\r\n if ($.isPlainObject(opts)) {\r\n self.opts = mergeOpts(self.opts, opts);\r\n }\r\n\r\n if ($.fancybox.isMobile) {\r\n self.opts = mergeOpts(self.opts, self.opts.mobile);\r\n }\r\n\r\n self.id = self.opts.id || ++called;\r\n\r\n self.currIndex = parseInt(self.opts.index, 10) || 0;\r\n self.prevIndex = null;\r\n\r\n self.prevPos = null;\r\n self.currPos = 0;\r\n\r\n self.firstRun = true;\r\n\r\n // All group items\r\n self.group = [];\r\n\r\n // Existing slides (for current, next and previous gallery items)\r\n self.slides = {};\r\n\r\n // Create group elements\r\n self.addContent(content);\r\n\r\n if (!self.group.length) {\r\n return;\r\n }\r\n\r\n self.init();\r\n };\r\n\r\n $.extend(FancyBox.prototype, {\r\n // Create DOM structure\r\n // ====================\r\n\r\n init: function () {\r\n var self = this,\r\n firstItem = self.group[self.currIndex],\r\n firstItemOpts = firstItem.opts,\r\n $container,\r\n buttonStr;\r\n\r\n if (firstItemOpts.closeExisting) {\r\n $.fancybox.close(true);\r\n }\r\n\r\n // Hide scrollbars\r\n // ===============\r\n\r\n $(\"body\").addClass(\"fancybox-active\");\r\n\r\n if (\r\n !$.fancybox.getInstance() &&\r\n firstItemOpts.hideScrollbar !== false &&\r\n !$.fancybox.isMobile &&\r\n document.body.scrollHeight > window.innerHeight\r\n ) {\r\n $(\"head\").append(\r\n '\"\r\n );\r\n\r\n $(\"body\").addClass(\"compensate-for-scrollbar\");\r\n }\r\n\r\n // Build html markup and set references\r\n // ====================================\r\n\r\n // Build html code for buttons and insert into main template\r\n buttonStr = \"\";\r\n\r\n $.each(firstItemOpts.buttons, function (index, value) {\r\n buttonStr += firstItemOpts.btnTpl[value] || \"\";\r\n });\r\n\r\n // Create markup from base template, it will be initially hidden to\r\n // avoid unnecessary work like painting while initializing is not complete\r\n $container = $(\r\n self.translate(\r\n self,\r\n firstItemOpts.baseTpl\r\n .replace(\"{{buttons}}\", buttonStr)\r\n .replace(\"{{arrows}}\", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)\r\n )\r\n )\r\n .attr(\"id\", \"fancybox-container-\" + self.id)\r\n .addClass(firstItemOpts.baseClass)\r\n .data(\"FancyBox\", self)\r\n .appendTo(firstItemOpts.parentEl);\r\n\r\n // Create object holding references to jQuery wrapped nodes\r\n self.$refs = {\r\n container: $container\r\n };\r\n\r\n [\"bg\", \"inner\", \"infobar\", \"toolbar\", \"stage\", \"caption\", \"navigation\"].forEach(function (item) {\r\n self.$refs[item] = $container.find(\".fancybox-\" + item);\r\n });\r\n\r\n self.trigger(\"onInit\");\r\n\r\n // Enable events, deactive previous instances\r\n self.activate();\r\n\r\n // Build slides, load and reveal content\r\n self.jumpTo(self.currIndex);\r\n },\r\n\r\n // Simple i18n support - replaces object keys found in template\r\n // with corresponding values\r\n // ============================================================\r\n\r\n translate: function (obj, str) {\r\n var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en;\r\n\r\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, function (match, n) {\r\n return arr[n] === undefined ? match : arr[n];\r\n });\r\n },\r\n\r\n // Populate current group with fresh content\r\n // Check if each object has valid type and content\r\n // ===============================================\r\n\r\n addContent: function (content) {\r\n var self = this,\r\n items = $.makeArray(content),\r\n thumbs;\r\n\r\n $.each(items, function (i, item) {\r\n var obj = {},\r\n opts = {},\r\n $item,\r\n type,\r\n found,\r\n src,\r\n srcParts;\r\n\r\n // Step 1 - Make sure we have an object\r\n // ====================================\r\n\r\n if ($.isPlainObject(item)) {\r\n // We probably have manual usage here, something like\r\n // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n obj = item;\r\n opts = item.opts || item;\r\n } else if ($.type(item) === \"object\" && $(item).length) {\r\n // Here we probably have jQuery collection returned by some selector\r\n $item = $(item);\r\n\r\n // Support attributes like `data-options='{\"touch\" : false}'` and `data-touch='false'`\r\n opts = $item.data() || {};\r\n opts = $.extend(true, {}, opts, opts.options);\r\n\r\n // Here we store clicked element\r\n opts.$orig = $item;\r\n\r\n obj.src = self.opts.src || opts.src || $item.attr(\"href\");\r\n\r\n // Assume that simple syntax is used, for example:\r\n // `$.fancybox.open( $(\"#test\"), {} );`\r\n if (!obj.type && !obj.src) {\r\n obj.type = \"inline\";\r\n obj.src = item;\r\n }\r\n } else {\r\n // Assume we have a simple html code, for example:\r\n // $.fancybox.open( '

Hi!

' );\r\n obj = {\r\n type: \"html\",\r\n src: item + \"\"\r\n };\r\n }\r\n\r\n // Each gallery object has full collection of options\r\n obj.opts = $.extend(true, {}, self.opts, opts);\r\n\r\n // Do not merge buttons array\r\n if ($.isArray(opts.buttons)) {\r\n obj.opts.buttons = opts.buttons;\r\n }\r\n\r\n if ($.fancybox.isMobile && obj.opts.mobile) {\r\n obj.opts = mergeOpts(obj.opts, obj.opts.mobile);\r\n }\r\n\r\n // Step 2 - Make sure we have content type, if not - try to guess\r\n // ==============================================================\r\n\r\n type = obj.type || obj.opts.type;\r\n src = obj.src || \"\";\r\n\r\n if (!type && src) {\r\n if ((found = src.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))) {\r\n type = \"video\";\r\n\r\n if (!obj.opts.video.format) {\r\n obj.opts.video.format = \"video/\" + (found[1] === \"ogv\" ? \"ogg\" : found[1]);\r\n }\r\n } else if (src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)) {\r\n type = \"image\";\r\n } else if (src.match(/\\.(pdf)((\\?|#).*)?$/i)) {\r\n type = \"iframe\";\r\n obj = $.extend(true, obj, {\r\n contentType: \"pdf\",\r\n opts: {\r\n iframe: {\r\n preload: false\r\n }\r\n }\r\n });\r\n } else if (src.charAt(0) === \"#\") {\r\n type = \"inline\";\r\n }\r\n }\r\n\r\n if (type) {\r\n obj.type = type;\r\n } else {\r\n self.trigger(\"objectNeedsType\", obj);\r\n }\r\n\r\n if (!obj.contentType) {\r\n obj.contentType = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1 ? \"html\" : obj.type;\r\n }\r\n\r\n // Step 3 - Some adjustments\r\n // =========================\r\n\r\n obj.index = self.group.length;\r\n\r\n if (obj.opts.smallBtn == \"auto\") {\r\n obj.opts.smallBtn = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1;\r\n }\r\n\r\n if (obj.opts.toolbar === \"auto\") {\r\n obj.opts.toolbar = !obj.opts.smallBtn;\r\n }\r\n\r\n // Find thumbnail image, check if exists and if is in the viewport\r\n obj.$thumb = obj.opts.$thumb || null;\r\n\r\n if (obj.opts.$trigger && obj.index === self.opts.index) {\r\n obj.$thumb = obj.opts.$trigger.find(\"img:first\");\r\n\r\n if (obj.$thumb.length) {\r\n obj.opts.$orig = obj.opts.$trigger;\r\n }\r\n }\r\n\r\n if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) {\r\n obj.$thumb = obj.opts.$orig.find(\"img:first\");\r\n }\r\n\r\n if (obj.$thumb && !obj.$thumb.length) {\r\n obj.$thumb = null;\r\n }\r\n\r\n obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null);\r\n\r\n // \"caption\" is a \"special\" option, it can be used to customize caption per gallery item\r\n if ($.type(obj.opts.caption) === \"function\") {\r\n obj.opts.caption = obj.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n if ($.type(self.opts.caption) === \"function\") {\r\n obj.opts.caption = self.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n // Make sure we have caption as a string or jQuery object\r\n if (!(obj.opts.caption instanceof $)) {\r\n obj.opts.caption = obj.opts.caption === undefined ? \"\" : obj.opts.caption + \"\";\r\n }\r\n\r\n // Check if url contains \"filter\" used to filter the content\r\n // Example: \"ajax.html #something\"\r\n if (obj.type === \"ajax\") {\r\n srcParts = src.split(/\\s+/, 2);\r\n\r\n if (srcParts.length > 1) {\r\n obj.src = srcParts.shift();\r\n\r\n obj.opts.filter = srcParts.shift();\r\n }\r\n }\r\n\r\n // Hide all buttons and disable interactivity for modal items\r\n if (obj.opts.modal) {\r\n obj.opts = $.extend(true, obj.opts, {\r\n trapFocus: true,\r\n // Remove buttons\r\n infobar: 0,\r\n toolbar: 0,\r\n\r\n smallBtn: 0,\r\n\r\n // Disable keyboard navigation\r\n keyboard: 0,\r\n\r\n // Disable some modules\r\n slideShow: 0,\r\n fullScreen: 0,\r\n thumbs: 0,\r\n touch: 0,\r\n\r\n // Disable click event handlers\r\n clickContent: false,\r\n clickSlide: false,\r\n clickOutside: false,\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false\r\n });\r\n }\r\n\r\n // Step 4 - Add processed object to group\r\n // ======================================\r\n\r\n self.group.push(obj);\r\n });\r\n\r\n // Update controls if gallery is already opened\r\n if (Object.keys(self.slides).length) {\r\n self.updateControls();\r\n\r\n // Update thumbnails, if needed\r\n thumbs = self.Thumbs;\r\n\r\n if (thumbs && thumbs.isActive) {\r\n thumbs.create();\r\n\r\n thumbs.focus();\r\n }\r\n }\r\n },\r\n\r\n // Attach an event handler functions for:\r\n // - navigation buttons\r\n // - browser scrolling, resizing;\r\n // - focusing\r\n // - keyboard\r\n // - detecting inactivity\r\n // ======================================\r\n\r\n addEvents: function () {\r\n var self = this;\r\n\r\n self.removeEvents();\r\n\r\n // Make navigation elements clickable\r\n // ==================================\r\n\r\n self.$refs.container\r\n .on(\"click.fb-close\", \"[data-fancybox-close]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n })\r\n .on(\"touchstart.fb-prev click.fb-prev\", \"[data-fancybox-prev]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.previous();\r\n })\r\n .on(\"touchstart.fb-next click.fb-next\", \"[data-fancybox-next]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.next();\r\n })\r\n .on(\"click.fb\", \"[data-fancybox-zoom]\", function (e) {\r\n // Click handler for zoom button\r\n self[self.isScaledDown() ? \"scaleToActual\" : \"scaleToFit\"]();\r\n });\r\n\r\n // Handle page scrolling and browser resizing\r\n // ==========================================\r\n\r\n $W.on(\"orientationchange.fb resize.fb\", function (e) {\r\n if (e && e.originalEvent && e.originalEvent.type === \"resize\") {\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n self.update(e);\r\n });\r\n } else {\r\n if (self.current && self.current.type === \"iframe\") {\r\n self.$refs.stage.hide();\r\n }\r\n\r\n setTimeout(\r\n function () {\r\n self.$refs.stage.show();\r\n\r\n self.update(e);\r\n },\r\n $.fancybox.isMobile ? 600 : 250\r\n );\r\n }\r\n });\r\n\r\n $D.on(\"keydown.fb\", function (e) {\r\n var instance = $.fancybox ? $.fancybox.getInstance() : null,\r\n current = instance.current,\r\n keycode = e.keyCode || e.which;\r\n\r\n // Trap keyboard focus inside of the modal\r\n // =======================================\r\n\r\n if (keycode == 9) {\r\n if (current.opts.trapFocus) {\r\n self.focus(e);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Enable keyboard navigation\r\n // ==========================\r\n\r\n if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is(\"input,textarea,video,audio,select\")) {\r\n return;\r\n }\r\n\r\n // Backspace and Esc keys\r\n if (keycode === 8 || keycode === 27) {\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n\r\n return;\r\n }\r\n\r\n // Left arrow and Up arrow\r\n if (keycode === 37 || keycode === 38) {\r\n e.preventDefault();\r\n\r\n self.previous();\r\n\r\n return;\r\n }\r\n\r\n // Righ arrow and Down arrow\r\n if (keycode === 39 || keycode === 40) {\r\n e.preventDefault();\r\n\r\n self.next();\r\n\r\n return;\r\n }\r\n\r\n self.trigger(\"afterKeydown\", e, keycode);\r\n });\r\n\r\n // Hide controls after some inactivity period\r\n if (self.group[self.currIndex].opts.idleTime) {\r\n self.idleSecondsCounter = 0;\r\n\r\n $D.on(\r\n \"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",\r\n function (e) {\r\n self.idleSecondsCounter = 0;\r\n\r\n if (self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n self.isIdle = false;\r\n }\r\n );\r\n\r\n self.idleInterval = window.setInterval(function () {\r\n self.idleSecondsCounter++;\r\n\r\n if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) {\r\n self.isIdle = true;\r\n self.idleSecondsCounter = 0;\r\n\r\n self.hideControls();\r\n }\r\n }, 1000);\r\n }\r\n },\r\n\r\n // Remove events added by the core\r\n // ===============================\r\n\r\n removeEvents: function () {\r\n var self = this;\r\n\r\n $W.off(\"orientationchange.fb resize.fb\");\r\n $D.off(\"keydown.fb .fb-idle\");\r\n\r\n this.$refs.container.off(\".fb-close .fb-prev .fb-next\");\r\n\r\n if (self.idleInterval) {\r\n window.clearInterval(self.idleInterval);\r\n\r\n self.idleInterval = null;\r\n }\r\n },\r\n\r\n // Change to previous gallery item\r\n // ===============================\r\n\r\n previous: function (duration) {\r\n return this.jumpTo(this.currPos - 1, duration);\r\n },\r\n\r\n // Change to next gallery item\r\n // ===========================\r\n\r\n next: function (duration) {\r\n return this.jumpTo(this.currPos + 1, duration);\r\n },\r\n\r\n // Switch to selected gallery item\r\n // ===============================\r\n\r\n jumpTo: function (pos, duration) {\r\n var self = this,\r\n groupLen = self.group.length,\r\n firstRun,\r\n isMoved,\r\n loop,\r\n current,\r\n previous,\r\n slidePos,\r\n stagePos,\r\n prop,\r\n diff;\r\n\r\n if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) {\r\n return;\r\n }\r\n\r\n // Should loop?\r\n pos = parseInt(pos, 10);\r\n loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n if (!loop && (pos < 0 || pos >= groupLen)) {\r\n return false;\r\n }\r\n\r\n // Check if opening for the first time; this helps to speed things up\r\n firstRun = self.firstRun = !Object.keys(self.slides).length;\r\n\r\n // Create slides\r\n previous = self.current;\r\n\r\n self.prevIndex = self.currIndex;\r\n self.prevPos = self.currPos;\r\n\r\n current = self.createSlide(pos);\r\n\r\n if (groupLen > 1) {\r\n if (loop || current.index < groupLen - 1) {\r\n self.createSlide(pos + 1);\r\n }\r\n\r\n if (loop || current.index > 0) {\r\n self.createSlide(pos - 1);\r\n }\r\n }\r\n\r\n self.current = current;\r\n self.currIndex = current.index;\r\n self.currPos = current.pos;\r\n\r\n self.trigger(\"beforeShow\", firstRun);\r\n\r\n self.updateControls();\r\n\r\n // Validate duration length\r\n current.forcedDuration = undefined;\r\n\r\n if ($.isNumeric(duration)) {\r\n current.forcedDuration = duration;\r\n } else {\r\n duration = current.opts[firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n }\r\n\r\n duration = parseInt(duration, 10);\r\n\r\n // Check if user has swiped the slides or if still animating\r\n isMoved = self.isMoved(current);\r\n\r\n // Make sure current slide is visible\r\n current.$slide.addClass(\"fancybox-slide--current\");\r\n\r\n // Fresh start - reveal container, current slide and start loading content\r\n if (firstRun) {\r\n if (current.opts.animationEffect && duration) {\r\n self.$refs.container.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n self.$refs.container.addClass(\"fancybox-is-open\").trigger(\"focus\");\r\n\r\n // Attempt to load content into slide\r\n // This will later call `afterLoad` -> `revealContent`\r\n self.loadSlide(current);\r\n\r\n self.preload(\"image\");\r\n\r\n return;\r\n }\r\n\r\n // Get actual slide/stage positions (before cleaning up)\r\n slidePos = $.fancybox.getTranslate(previous.$slide);\r\n stagePos = $.fancybox.getTranslate(self.$refs.stage);\r\n\r\n // Clean up all slides\r\n $.each(self.slides, function (index, slide) {\r\n $.fancybox.stop(slide.$slide, true);\r\n });\r\n\r\n if (previous.pos !== current.pos) {\r\n previous.isComplete = false;\r\n }\r\n\r\n previous.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current\");\r\n\r\n // If slides are out of place, then animate them to correct position\r\n if (isMoved) {\r\n // Calculate horizontal swipe distance\r\n diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter);\r\n\r\n $.each(self.slides, function (index, slide) {\r\n slide.$slide.removeClass(\"fancybox-animated\").removeClass(function (index, className) {\r\n return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n });\r\n\r\n // Make sure that each slide is in equal distance\r\n // This is mostly needed for freshly added slides, because they are not yet positioned\r\n var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter;\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: 0,\r\n left: leftPos - stagePos.left + diff\r\n });\r\n\r\n if (slide.pos !== current.pos) {\r\n slide.$slide.addClass(\"fancybox-slide--\" + (slide.pos > current.pos ? \"next\" : \"previous\"));\r\n }\r\n\r\n // Redraw to make sure that transition will start\r\n forceRedraw(slide.$slide);\r\n\r\n // Animate the slide\r\n $.fancybox.animate(\r\n slide.$slide, {\r\n top: 0,\r\n left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter\r\n },\r\n duration,\r\n function () {\r\n slide.$slide\r\n .css({\r\n transform: \"\",\r\n opacity: \"\"\r\n })\r\n .removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n }\r\n );\r\n });\r\n } else if (duration && current.opts.transitionEffect) {\r\n // Set transition effect for previously active slide\r\n prop = \"fancybox-animated fancybox-fx-\" + current.opts.transitionEffect;\r\n\r\n previous.$slide.addClass(\"fancybox-slide--\" + (previous.pos > current.pos ? \"next\" : \"previous\"));\r\n\r\n $.fancybox.animate(\r\n previous.$slide,\r\n prop,\r\n duration,\r\n function () {\r\n previous.$slide.removeClass(prop).removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n },\r\n false\r\n );\r\n }\r\n\r\n if (current.isLoaded) {\r\n self.revealContent(current);\r\n } else {\r\n self.loadSlide(current);\r\n }\r\n\r\n self.preload(\"image\");\r\n },\r\n\r\n // Create new \"slide\" element\r\n // These are gallery items that are actually added to DOM\r\n // =======================================================\r\n\r\n createSlide: function (pos) {\r\n var self = this,\r\n $slide,\r\n index;\r\n\r\n index = pos % self.group.length;\r\n index = index < 0 ? self.group.length + index : index;\r\n\r\n if (!self.slides[pos] && self.group[index]) {\r\n $slide = $('
').appendTo(self.$refs.stage);\r\n\r\n self.slides[pos] = $.extend(true, {}, self.group[index], {\r\n pos: pos,\r\n $slide: $slide,\r\n isLoaded: false\r\n });\r\n\r\n self.updateSlide(self.slides[pos]);\r\n }\r\n\r\n return self.slides[pos];\r\n },\r\n\r\n // Scale image to the actual size of the image;\r\n // x and y values should be relative to the slide\r\n // ==============================================\r\n\r\n scaleToActual: function (x, y, duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n canvasWidth = $.fancybox.getTranslate(current.$slide).width,\r\n canvasHeight = $.fancybox.getTranslate(current.$slide).height,\r\n newImgWidth = current.width,\r\n newImgHeight = current.height,\r\n imgPos,\r\n posX,\r\n posY,\r\n scaleX,\r\n scaleY;\r\n\r\n if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n self.isAnimating = true;\r\n\r\n $.fancybox.stop($content);\r\n\r\n x = x === undefined ? canvasWidth * 0.5 : x;\r\n y = y === undefined ? canvasHeight * 0.5 : y;\r\n\r\n imgPos = $.fancybox.getTranslate($content);\r\n\r\n imgPos.top -= $.fancybox.getTranslate(current.$slide).top;\r\n imgPos.left -= $.fancybox.getTranslate(current.$slide).left;\r\n\r\n scaleX = newImgWidth / imgPos.width;\r\n scaleY = newImgHeight / imgPos.height;\r\n\r\n // Get center position for original image\r\n posX = canvasWidth * 0.5 - newImgWidth * 0.5;\r\n posY = canvasHeight * 0.5 - newImgHeight * 0.5;\r\n\r\n // Make sure image does not move away from edges\r\n if (newImgWidth > canvasWidth) {\r\n posX = imgPos.left * scaleX - (x * scaleX - x);\r\n\r\n if (posX > 0) {\r\n posX = 0;\r\n }\r\n\r\n if (posX < canvasWidth - newImgWidth) {\r\n posX = canvasWidth - newImgWidth;\r\n }\r\n }\r\n\r\n if (newImgHeight > canvasHeight) {\r\n posY = imgPos.top * scaleY - (y * scaleY - y);\r\n\r\n if (posY > 0) {\r\n posY = 0;\r\n }\r\n\r\n if (posY < canvasHeight - newImgHeight) {\r\n posY = canvasHeight - newImgHeight;\r\n }\r\n }\r\n\r\n self.updateCursor(newImgWidth, newImgHeight);\r\n\r\n $.fancybox.animate(\r\n $content, {\r\n top: posY,\r\n left: posX,\r\n scaleX: scaleX,\r\n scaleY: scaleY\r\n },\r\n duration || 366,\r\n function () {\r\n self.isAnimating = false;\r\n }\r\n );\r\n\r\n // Stop slideshow\r\n if (self.SlideShow && self.SlideShow.isActive) {\r\n self.SlideShow.stop();\r\n }\r\n },\r\n\r\n // Scale image to fit inside parent element\r\n // ========================================\r\n\r\n scaleToFit: function (duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n end;\r\n\r\n if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n self.isAnimating = true;\r\n\r\n $.fancybox.stop($content);\r\n\r\n end = self.getFitPos(current);\r\n\r\n self.updateCursor(end.width, end.height);\r\n\r\n $.fancybox.animate(\r\n $content, {\r\n top: end.top,\r\n left: end.left,\r\n scaleX: end.width / $content.width(),\r\n scaleY: end.height / $content.height()\r\n },\r\n duration || 366,\r\n function () {\r\n self.isAnimating = false;\r\n }\r\n );\r\n },\r\n\r\n // Calculate image size to fit inside viewport\r\n // ===========================================\r\n\r\n getFitPos: function (slide) {\r\n var self = this,\r\n $content = slide.$content,\r\n $slide = slide.$slide,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n maxWidth,\r\n maxHeight,\r\n minRatio,\r\n aspectRatio,\r\n rez = {};\r\n\r\n if (!slide.isLoaded || !$content || !$content.length) {\r\n return false;\r\n }\r\n\r\n maxWidth = $.fancybox.getTranslate(self.$refs.stage).width;\r\n maxHeight = $.fancybox.getTranslate(self.$refs.stage).height;\r\n\r\n maxWidth -=\r\n parseFloat($slide.css(\"paddingLeft\")) +\r\n parseFloat($slide.css(\"paddingRight\")) +\r\n parseFloat($content.css(\"marginLeft\")) +\r\n parseFloat($content.css(\"marginRight\"));\r\n\r\n maxHeight -=\r\n parseFloat($slide.css(\"paddingTop\")) +\r\n parseFloat($slide.css(\"paddingBottom\")) +\r\n parseFloat($content.css(\"marginTop\")) +\r\n parseFloat($content.css(\"marginBottom\"));\r\n\r\n if (!width || !height) {\r\n width = maxWidth;\r\n height = maxHeight;\r\n }\r\n\r\n minRatio = Math.min(1, maxWidth / width, maxHeight / height);\r\n\r\n width = minRatio * width;\r\n height = minRatio * height;\r\n\r\n // Adjust width/height to precisely fit into container\r\n if (width > maxWidth - 0.5) {\r\n width = maxWidth;\r\n }\r\n\r\n if (height > maxHeight - 0.5) {\r\n height = maxHeight;\r\n }\r\n\r\n if (slide.type === \"image\") {\r\n rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css(\"paddingTop\"));\r\n rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css(\"paddingLeft\"));\r\n } else if (slide.contentType === \"video\") {\r\n // Force aspect ratio for the video\r\n // \"I say the whole world must learn of our peaceful ways… by force!\"\r\n aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9;\r\n\r\n if (height > width / aspectRatio) {\r\n height = width / aspectRatio;\r\n } else if (width > height * aspectRatio) {\r\n width = height * aspectRatio;\r\n }\r\n }\r\n\r\n rez.width = width;\r\n rez.height = height;\r\n\r\n return rez;\r\n },\r\n\r\n // Update content size and position for all slides\r\n // ==============================================\r\n\r\n update: function (e) {\r\n var self = this;\r\n\r\n $.each(self.slides, function (key, slide) {\r\n self.updateSlide(slide, e);\r\n });\r\n },\r\n\r\n // Update slide content position and size\r\n // ======================================\r\n\r\n updateSlide: function (slide, e) {\r\n var self = this,\r\n $content = slide && slide.$content,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n $slide = slide.$slide;\r\n\r\n // First, prevent caption overlap, if needed\r\n self.adjustCaption(slide);\r\n\r\n // Then resize content to fit inside the slide\r\n if ($content && (width || height || slide.contentType === \"video\") && !slide.hasError) {\r\n $.fancybox.stop($content);\r\n\r\n $.fancybox.setTranslate($content, self.getFitPos(slide));\r\n\r\n if (slide.pos === self.currPos) {\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n }\r\n }\r\n\r\n // Then some adjustments\r\n self.adjustLayout(slide);\r\n\r\n if ($slide.length) {\r\n $slide.trigger(\"refresh\");\r\n\r\n if (slide.pos === self.currPos) {\r\n self.$refs.toolbar\r\n .add(self.$refs.navigation.find(\".fancybox-button--arrow_right\"))\r\n .toggleClass(\"compensate-for-scrollbar\", $slide.get(0).scrollHeight > $slide.get(0).clientHeight);\r\n }\r\n }\r\n\r\n self.trigger(\"onUpdate\", slide, e);\r\n },\r\n\r\n // Horizontally center slide\r\n // =========================\r\n\r\n centerSlide: function (duration) {\r\n var self = this,\r\n current = self.current,\r\n $slide = current.$slide;\r\n\r\n if (self.isClosing || !current) {\r\n return;\r\n }\r\n\r\n $slide.siblings().css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n $slide\r\n .parent()\r\n .children()\r\n .removeClass(\"fancybox-slide--previous fancybox-slide--next\");\r\n\r\n $.fancybox.animate(\r\n $slide, {\r\n top: 0,\r\n left: 0,\r\n opacity: 1\r\n },\r\n duration === undefined ? 0 : duration,\r\n function () {\r\n // Clean up\r\n $slide.css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n if (!current.isComplete) {\r\n self.complete();\r\n }\r\n },\r\n false\r\n );\r\n },\r\n\r\n // Check if current slide is moved (swiped)\r\n // ========================================\r\n\r\n isMoved: function (slide) {\r\n var current = slide || this.current,\r\n slidePos,\r\n stagePos;\r\n\r\n if (!current) {\r\n return false;\r\n }\r\n\r\n stagePos = $.fancybox.getTranslate(this.$refs.stage);\r\n slidePos = $.fancybox.getTranslate(current.$slide);\r\n\r\n return (\r\n !current.$slide.hasClass(\"fancybox-animated\") &&\r\n (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5)\r\n );\r\n },\r\n\r\n // Update cursor style depending if content can be zoomed\r\n // ======================================================\r\n\r\n updateCursor: function (nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n $container = self.$refs.container,\r\n canPan,\r\n isZoomable;\r\n\r\n if (!current || self.isClosing || !self.Guestures) {\r\n return;\r\n }\r\n\r\n $container.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan\");\r\n\r\n canPan = self.canPan(nextWidth, nextHeight);\r\n\r\n isZoomable = canPan ? true : self.isZoomable();\r\n\r\n $container.toggleClass(\"fancybox-is-zoomable\", isZoomable);\r\n\r\n $(\"[data-fancybox-zoom]\").prop(\"disabled\", !isZoomable);\r\n\r\n if (canPan) {\r\n $container.addClass(\"fancybox-can-pan\");\r\n } else if (\r\n isZoomable &&\r\n (current.opts.clickContent === \"zoom\" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == \"zoom\"))\r\n ) {\r\n $container.addClass(\"fancybox-can-zoomIn\");\r\n } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== \"video\") {\r\n $container.addClass(\"fancybox-can-swipe\");\r\n }\r\n },\r\n\r\n // Check if current slide is zoomable\r\n // ==================================\r\n\r\n isZoomable: function () {\r\n var self = this,\r\n current = self.current,\r\n fitPos;\r\n\r\n // Assume that slide is zoomable if:\r\n // - image is still loading\r\n // - actual size of the image is smaller than available area\r\n if (current && !self.isClosing && current.type === \"image\" && !current.hasError) {\r\n if (!current.isLoaded) {\r\n return true;\r\n }\r\n\r\n fitPos = self.getFitPos(current);\r\n\r\n if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Check if current image dimensions are smaller than actual\r\n // =========================================================\r\n\r\n isScaledDown: function (nextWidth, nextHeight) {\r\n var self = this,\r\n rez = false,\r\n current = self.current,\r\n $content = current.$content;\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n rez = nextWidth < current.width && nextHeight < current.height;\r\n } else if ($content) {\r\n rez = $.fancybox.getTranslate($content);\r\n rez = rez.width < current.width && rez.height < current.height;\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Check if image dimensions exceed parent element\r\n // ===============================================\r\n\r\n canPan: function (nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n pos = null,\r\n rez = false;\r\n\r\n if (current.type === \"image\" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) {\r\n rez = self.getFitPos(current);\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n pos = {\r\n width: nextWidth,\r\n height: nextHeight\r\n };\r\n } else if (current.isComplete) {\r\n pos = $.fancybox.getTranslate(current.$content);\r\n }\r\n\r\n if (pos && rez) {\r\n rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5;\r\n }\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Load content into the slide\r\n // ===========================\r\n\r\n loadSlide: function (slide) {\r\n var self = this,\r\n type,\r\n $slide,\r\n ajaxLoad;\r\n\r\n if (slide.isLoading || slide.isLoaded) {\r\n return;\r\n }\r\n\r\n slide.isLoading = true;\r\n\r\n if (self.trigger(\"beforeLoad\", slide) === false) {\r\n slide.isLoading = false;\r\n\r\n return false;\r\n }\r\n\r\n type = slide.type;\r\n $slide = slide.$slide;\r\n\r\n $slide\r\n .off(\"refresh\")\r\n .trigger(\"onReset\")\r\n .addClass(slide.opts.slideClass);\r\n\r\n // Create content depending on the type\r\n switch (type) {\r\n case \"image\":\r\n self.setImage(slide);\r\n\r\n break;\r\n\r\n case \"iframe\":\r\n self.setIframe(slide);\r\n\r\n break;\r\n\r\n case \"html\":\r\n self.setContent(slide, slide.src || slide.content);\r\n\r\n break;\r\n\r\n case \"video\":\r\n self.setContent(\r\n slide,\r\n slide.opts.video.tpl\r\n .replace(/\\{\\{src\\}\\}/gi, slide.src)\r\n .replace(\"{{format}}\", slide.opts.videoFormat || slide.opts.video.format || \"\")\r\n .replace(\"{{poster}}\", slide.thumb || \"\")\r\n );\r\n\r\n break;\r\n\r\n case \"inline\":\r\n if ($(slide.src).length) {\r\n self.setContent(slide, $(slide.src));\r\n } else {\r\n self.setError(slide);\r\n }\r\n\r\n break;\r\n\r\n case \"ajax\":\r\n self.showLoading(slide);\r\n\r\n ajaxLoad = $.ajax(\r\n $.extend({}, slide.opts.ajax.settings, {\r\n url: slide.src,\r\n success: function (data, textStatus) {\r\n if (textStatus === \"success\") {\r\n self.setContent(slide, data);\r\n }\r\n },\r\n error: function (jqXHR, textStatus) {\r\n if (jqXHR && textStatus !== \"abort\") {\r\n self.setError(slide);\r\n }\r\n }\r\n })\r\n );\r\n\r\n $slide.one(\"onReset\", function () {\r\n ajaxLoad.abort();\r\n });\r\n\r\n break;\r\n\r\n default:\r\n self.setError(slide);\r\n\r\n break;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // Use thumbnail image, if possible\r\n // ================================\r\n\r\n setImage: function (slide) {\r\n var self = this,\r\n ghost;\r\n\r\n // Check if need to show loading icon\r\n setTimeout(function () {\r\n var $img = slide.$image;\r\n\r\n if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) {\r\n self.showLoading(slide);\r\n }\r\n }, 50);\r\n\r\n //Check if image has srcset\r\n self.checkSrcset(slide);\r\n\r\n // This will be wrapper containing both ghost and actual image\r\n slide.$content = $('
')\r\n .addClass(\"fancybox-is-hidden\")\r\n .appendTo(slide.$slide.addClass(\"fancybox-slide--image\"));\r\n\r\n // If we have a thumbnail, we can display it while actual image is loading\r\n // Users will not stare at black screen and actual image will appear gradually\r\n if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) {\r\n slide.width = slide.opts.width;\r\n slide.height = slide.opts.height;\r\n\r\n ghost = document.createElement(\"img\");\r\n\r\n ghost.onerror = function () {\r\n $(this).remove();\r\n\r\n slide.$ghost = null;\r\n };\r\n\r\n ghost.onload = function () {\r\n self.afterLoad(slide);\r\n };\r\n\r\n slide.$ghost = $(ghost)\r\n .addClass(\"fancybox-image\")\r\n .appendTo(slide.$content)\r\n .attr(\"src\", slide.thumb);\r\n }\r\n\r\n // Start loading actual image\r\n self.setBigImage(slide);\r\n },\r\n\r\n // Check if image has srcset and get the source\r\n // ============================================\r\n checkSrcset: function (slide) {\r\n var srcset = slide.opts.srcset || slide.opts.image.srcset,\r\n found,\r\n temp,\r\n pxRatio,\r\n windowWidth;\r\n\r\n // If we have \"srcset\", then we need to find first matching \"src\" value.\r\n // This is necessary, because when you set an src attribute, the browser will preload the image\r\n // before any javascript or even CSS is applied.\r\n if (srcset) {\r\n pxRatio = window.devicePixelRatio || 1;\r\n windowWidth = window.innerWidth * pxRatio;\r\n\r\n temp = srcset.split(\",\").map(function (el) {\r\n var ret = {};\r\n\r\n el.trim()\r\n .split(/\\s+/)\r\n .forEach(function (el, i) {\r\n var value = parseInt(el.substring(0, el.length - 1), 10);\r\n\r\n if (i === 0) {\r\n return (ret.url = el);\r\n }\r\n\r\n if (value) {\r\n ret.value = value;\r\n ret.postfix = el[el.length - 1];\r\n }\r\n });\r\n\r\n return ret;\r\n });\r\n\r\n // Sort by value\r\n temp.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n\r\n // Ok, now we have an array of all srcset values\r\n for (var j = 0; j < temp.length; j++) {\r\n var el = temp[j];\r\n\r\n if ((el.postfix === \"w\" && el.value >= windowWidth) || (el.postfix === \"x\" && el.value >= pxRatio)) {\r\n found = el;\r\n break;\r\n }\r\n }\r\n\r\n // If not found, take the last one\r\n if (!found && temp.length) {\r\n found = temp[temp.length - 1];\r\n }\r\n\r\n if (found) {\r\n slide.src = found.url;\r\n\r\n // If we have default width/height values, we can calculate height for matching source\r\n if (slide.width && slide.height && found.postfix == \"w\") {\r\n slide.height = (slide.width / slide.height) * found.value;\r\n slide.width = found.value;\r\n }\r\n\r\n slide.opts.srcset = srcset;\r\n }\r\n }\r\n },\r\n\r\n // Create full-size image\r\n // ======================\r\n\r\n setBigImage: function (slide) {\r\n var self = this,\r\n img = document.createElement(\"img\"),\r\n $img = $(img);\r\n\r\n slide.$image = $img\r\n .one(\"error\", function () {\r\n self.setError(slide);\r\n })\r\n .one(\"load\", function () {\r\n var sizes;\r\n\r\n if (!slide.$ghost) {\r\n self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight);\r\n\r\n self.afterLoad(slide);\r\n }\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n if (slide.opts.srcset) {\r\n sizes = slide.opts.sizes;\r\n\r\n if (!sizes || sizes === \"auto\") {\r\n sizes =\r\n (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? \"100\" : Math.round((slide.width / slide.height) * 100)) +\r\n \"vw\";\r\n }\r\n\r\n $img.attr(\"sizes\", sizes).attr(\"srcset\", slide.opts.srcset);\r\n }\r\n\r\n // Hide temporary image after some delay\r\n if (slide.$ghost) {\r\n setTimeout(function () {\r\n if (slide.$ghost && !self.isClosing) {\r\n slide.$ghost.hide();\r\n }\r\n }, Math.min(300, Math.max(1000, slide.height / 1600)));\r\n }\r\n\r\n self.hideLoading(slide);\r\n })\r\n .addClass(\"fancybox-image\")\r\n .attr(\"src\", slide.src)\r\n .appendTo(slide.$content);\r\n\r\n if ((img.complete || img.readyState == \"complete\") && $img.naturalWidth && $img.naturalHeight) {\r\n $img.trigger(\"load\");\r\n } else if (img.error) {\r\n $img.trigger(\"error\");\r\n }\r\n },\r\n\r\n // Computes the slide size from image size and maxWidth/maxHeight\r\n // ==============================================================\r\n\r\n resolveImageSlideSize: function (slide, imgWidth, imgHeight) {\r\n var maxWidth = parseInt(slide.opts.width, 10),\r\n maxHeight = parseInt(slide.opts.height, 10);\r\n\r\n // Sets the default values from the image\r\n slide.width = imgWidth;\r\n slide.height = imgHeight;\r\n\r\n if (maxWidth > 0) {\r\n slide.width = maxWidth;\r\n slide.height = Math.floor((maxWidth * imgHeight) / imgWidth);\r\n }\r\n\r\n if (maxHeight > 0) {\r\n slide.width = Math.floor((maxHeight * imgWidth) / imgHeight);\r\n slide.height = maxHeight;\r\n }\r\n },\r\n\r\n // Create iframe wrapper, iframe and bindings\r\n // ==========================================\r\n\r\n setIframe: function (slide) {\r\n var self = this,\r\n opts = slide.opts.iframe,\r\n $slide = slide.$slide,\r\n $iframe;\r\n\r\n slide.$content = $('
')\r\n .css(opts.css)\r\n .appendTo($slide);\r\n\r\n $slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n slide.$iframe = $iframe = $(opts.tpl.replace(/\\{rnd\\}/g, new Date().getTime()))\r\n .attr(opts.attr)\r\n .appendTo(slide.$content);\r\n\r\n if (opts.preload) {\r\n self.showLoading(slide);\r\n\r\n // Unfortunately, it is not always possible to determine if iframe is successfully loaded\r\n // (due to browser security policy)\r\n\r\n $iframe.on(\"load.fb error.fb\", function (e) {\r\n this.isReady = 1;\r\n\r\n slide.$slide.trigger(\"refresh\");\r\n\r\n self.afterLoad(slide);\r\n });\r\n\r\n // Recalculate iframe content size\r\n // ===============================\r\n\r\n $slide.on(\"refresh.fb\", function () {\r\n var $content = slide.$content,\r\n frameWidth = opts.css.width,\r\n frameHeight = opts.css.height,\r\n $contents,\r\n $body;\r\n\r\n if ($iframe[0].isReady !== 1) {\r\n return;\r\n }\r\n\r\n try {\r\n $contents = $iframe.contents();\r\n $body = $contents.find(\"body\");\r\n } catch (ignore) {}\r\n\r\n // Calculate content dimensions, if it is accessible\r\n if ($body && $body.length && $body.children().length) {\r\n // Avoid scrolling to top (if multiple instances)\r\n $slide.css(\"overflow\", \"visible\");\r\n\r\n $content.css({\r\n width: \"100%\",\r\n \"max-width\": \"100%\",\r\n height: \"9999px\"\r\n });\r\n\r\n if (frameWidth === undefined) {\r\n frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true)));\r\n }\r\n\r\n $content.css(\"width\", frameWidth ? frameWidth : \"\").css(\"max-width\", \"\");\r\n\r\n if (frameHeight === undefined) {\r\n frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true)));\r\n }\r\n\r\n $content.css(\"height\", frameHeight ? frameHeight : \"\");\r\n\r\n $slide.css(\"overflow\", \"auto\");\r\n }\r\n\r\n $content.removeClass(\"fancybox-is-hidden\");\r\n });\r\n } else {\r\n self.afterLoad(slide);\r\n }\r\n\r\n $iframe.attr(\"src\", slide.src);\r\n\r\n // Remove iframe if closing or changing gallery item\r\n $slide.one(\"onReset\", function () {\r\n // This helps IE not to throw errors when closing\r\n try {\r\n $(this)\r\n .find(\"iframe\")\r\n .hide()\r\n .unbind()\r\n .attr(\"src\", \"//about:blank\");\r\n } catch (ignore) {}\r\n\r\n $(this)\r\n .off(\"refresh.fb\")\r\n .empty();\r\n\r\n slide.isLoaded = false;\r\n slide.isRevealed = false;\r\n });\r\n },\r\n\r\n // Wrap and append content to the slide\r\n // ======================================\r\n\r\n setContent: function (slide, content) {\r\n var self = this;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n self.hideLoading(slide);\r\n\r\n if (slide.$content) {\r\n $.fancybox.stop(slide.$content);\r\n }\r\n\r\n slide.$slide.empty();\r\n\r\n // If content is a jQuery object, then it will be moved to the slide.\r\n // The placeholder is created so we will know where to put it back.\r\n if (isQuery(content) && content.parent().length) {\r\n // Make sure content is not already moved to fancyBox\r\n if (content.hasClass(\"fancybox-content\") || content.parent().hasClass(\"fancybox-content\")) {\r\n content.parents(\".fancybox-slide\").trigger(\"onReset\");\r\n }\r\n\r\n // Create temporary element marking original place of the content\r\n slide.$placeholder = $(\"
\")\r\n .hide()\r\n .insertAfter(content);\r\n\r\n // Make sure content is visible\r\n content.css(\"display\", \"inline-block\");\r\n } else if (!slide.hasError) {\r\n // If content is just a plain text, try to convert it to html\r\n if ($.type(content) === \"string\") {\r\n content = $(\"
\")\r\n .append($.trim(content))\r\n .contents();\r\n }\r\n\r\n // If \"filter\" option is provided, then filter content\r\n if (slide.opts.filter) {\r\n content = $(\"
\")\r\n .html(content)\r\n .find(slide.opts.filter);\r\n }\r\n }\r\n\r\n slide.$slide.one(\"onReset\", function () {\r\n // Pause all html5 video/audio\r\n $(this)\r\n .find(\"video,audio\")\r\n .trigger(\"pause\");\r\n\r\n // Put content back\r\n if (slide.$placeholder) {\r\n slide.$placeholder.after(content.removeClass(\"fancybox-content\").hide()).remove();\r\n\r\n slide.$placeholder = null;\r\n }\r\n\r\n // Remove custom close button\r\n if (slide.$smallBtn) {\r\n slide.$smallBtn.remove();\r\n\r\n slide.$smallBtn = null;\r\n }\r\n\r\n // Remove content and mark slide as not loaded\r\n if (!slide.hasError) {\r\n $(this).empty();\r\n\r\n slide.isLoaded = false;\r\n slide.isRevealed = false;\r\n }\r\n });\r\n\r\n $(content).appendTo(slide.$slide);\r\n\r\n if ($(content).is(\"video,audio\")) {\r\n $(content).addClass(\"fancybox-video\");\r\n\r\n $(content).wrap(\"
\");\r\n\r\n slide.contentType = \"video\";\r\n\r\n slide.opts.width = slide.opts.width || $(content).attr(\"width\");\r\n slide.opts.height = slide.opts.height || $(content).attr(\"height\");\r\n }\r\n\r\n slide.$content = slide.$slide\r\n .children()\r\n .filter(\"div,form,main,video,audio,article,.fancybox-content\")\r\n .first();\r\n\r\n slide.$content.siblings().hide();\r\n\r\n // Re-check if there is a valid content\r\n // (in some cases, ajax response can contain various elements or plain text)\r\n if (!slide.$content.length) {\r\n slide.$content = slide.$slide\r\n .wrapInner(\"
\")\r\n .children()\r\n .first();\r\n }\r\n\r\n slide.$content.addClass(\"fancybox-content\");\r\n\r\n slide.$slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n self.afterLoad(slide);\r\n },\r\n\r\n // Display error message\r\n // =====================\r\n\r\n setError: function (slide) {\r\n slide.hasError = true;\r\n\r\n slide.$slide\r\n .trigger(\"onReset\")\r\n .removeClass(\"fancybox-slide--\" + slide.contentType)\r\n .addClass(\"fancybox-slide--error\");\r\n\r\n slide.contentType = \"html\";\r\n\r\n this.setContent(slide, this.translate(slide, slide.opts.errorTpl));\r\n\r\n if (slide.pos === this.currPos) {\r\n this.isAnimating = false;\r\n }\r\n },\r\n\r\n // Show loading icon inside the slide\r\n // ==================================\r\n\r\n showLoading: function (slide) {\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if (slide && !slide.$spinner) {\r\n slide.$spinner = $(self.translate(self, self.opts.spinnerTpl))\r\n .appendTo(slide.$slide)\r\n .hide()\r\n .fadeIn(\"fast\");\r\n }\r\n },\r\n\r\n // Remove loading icon from the slide\r\n // ==================================\r\n\r\n hideLoading: function (slide) {\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if (slide && slide.$spinner) {\r\n slide.$spinner.stop().remove();\r\n\r\n delete slide.$spinner;\r\n }\r\n },\r\n\r\n // Adjustments after slide content has been loaded\r\n // ===============================================\r\n\r\n afterLoad: function (slide) {\r\n var self = this;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n slide.isLoading = false;\r\n slide.isLoaded = true;\r\n\r\n self.trigger(\"afterLoad\", slide);\r\n\r\n self.hideLoading(slide);\r\n\r\n // Add small close button\r\n if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) {\r\n slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content);\r\n }\r\n\r\n // Disable right click\r\n if (slide.opts.protect && slide.$content && !slide.hasError) {\r\n slide.$content.on(\"contextmenu.fb\", function (e) {\r\n if (e.button == 2) {\r\n e.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n\r\n // Add fake element on top of the image\r\n // This makes a bit harder for user to select image\r\n if (slide.type === \"image\") {\r\n $('
').appendTo(slide.$content);\r\n }\r\n }\r\n\r\n self.adjustCaption(slide);\r\n\r\n self.adjustLayout(slide);\r\n\r\n if (slide.pos === self.currPos) {\r\n self.updateCursor();\r\n }\r\n\r\n self.revealContent(slide);\r\n },\r\n\r\n // Prevent caption overlap,\r\n // fix css inconsistency across browsers\r\n // =====================================\r\n\r\n adjustCaption: function (slide) {\r\n var self = this,\r\n current = slide || self.current,\r\n caption = current.opts.caption,\r\n preventOverlap = current.opts.preventCaptionOverlap,\r\n $caption = self.$refs.caption,\r\n $clone,\r\n captionH = false;\r\n\r\n $caption.toggleClass(\"fancybox-caption--separate\", preventOverlap);\r\n\r\n if (preventOverlap && caption && caption.length) {\r\n if (current.pos !== self.currPos) {\r\n $clone = $caption.clone().appendTo($caption.parent());\r\n\r\n $clone\r\n .children()\r\n .eq(0)\r\n .empty()\r\n .html(caption);\r\n\r\n captionH = $clone.outerHeight(true);\r\n\r\n $clone.empty().remove();\r\n } else if (self.$caption) {\r\n captionH = self.$caption.outerHeight(true);\r\n }\r\n\r\n current.$slide.css(\"padding-bottom\", captionH || \"\");\r\n }\r\n },\r\n\r\n // Simple hack to fix inconsistency across browsers, described here (affects Edge, too):\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=748518\r\n // ====================================================================================\r\n\r\n adjustLayout: function (slide) {\r\n var self = this,\r\n current = slide || self.current,\r\n scrollHeight,\r\n marginBottom,\r\n inlinePadding,\r\n actualPadding;\r\n\r\n if (current.isLoaded && current.opts.disableLayoutFix !== true) {\r\n current.$content.css(\"margin-bottom\", \"\");\r\n\r\n // If we would always set margin-bottom for the content,\r\n // then it would potentially break vertical align\r\n if (current.$content.outerHeight() > current.$slide.height() + 0.5) {\r\n inlinePadding = current.$slide[0].style[\"padding-bottom\"];\r\n actualPadding = current.$slide.css(\"padding-bottom\");\r\n\r\n if (parseFloat(actualPadding) > 0) {\r\n scrollHeight = current.$slide[0].scrollHeight;\r\n\r\n current.$slide.css(\"padding-bottom\", 0);\r\n\r\n if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) {\r\n marginBottom = actualPadding;\r\n }\r\n\r\n current.$slide.css(\"padding-bottom\", inlinePadding);\r\n }\r\n }\r\n\r\n current.$content.css(\"margin-bottom\", marginBottom);\r\n }\r\n },\r\n\r\n // Make content visible\r\n // This method is called right after content has been loaded or\r\n // user navigates gallery and transition should start\r\n // ============================================================\r\n\r\n revealContent: function (slide) {\r\n var self = this,\r\n $slide = slide.$slide,\r\n end = false,\r\n start = false,\r\n isMoved = self.isMoved(slide),\r\n isRevealed = slide.isRevealed,\r\n effect,\r\n effectClassName,\r\n duration,\r\n opacity;\r\n\r\n slide.isRevealed = true;\r\n\r\n effect = slide.opts[self.firstRun ? \"animationEffect\" : \"transitionEffect\"];\r\n duration = slide.opts[self.firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n\r\n duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10);\r\n\r\n if (isMoved || slide.pos !== self.currPos || !duration) {\r\n effect = false;\r\n }\r\n\r\n // Check if can zoom\r\n if (effect === \"zoom\") {\r\n if (slide.pos === self.currPos && duration && slide.type === \"image\" && !slide.hasError && (start = self.getThumbPos(slide))) {\r\n end = self.getFitPos(slide);\r\n } else {\r\n effect = \"fade\";\r\n }\r\n }\r\n\r\n // Zoom animation\r\n // ==============\r\n if (effect === \"zoom\") {\r\n self.isAnimating = true;\r\n\r\n end.scaleX = end.width / start.width;\r\n end.scaleY = end.height / start.height;\r\n\r\n // Check if we need to animate opacity\r\n opacity = slide.opts.zoomOpacity;\r\n\r\n if (opacity == \"auto\") {\r\n opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1;\r\n }\r\n\r\n if (opacity) {\r\n start.opacity = 0.1;\r\n end.opacity = 1;\r\n }\r\n\r\n // Draw image at start position\r\n $.fancybox.setTranslate(slide.$content.removeClass(\"fancybox-is-hidden\"), start);\r\n\r\n forceRedraw(slide.$content);\r\n\r\n // Start animation\r\n $.fancybox.animate(slide.$content, end, duration, function () {\r\n self.isAnimating = false;\r\n\r\n self.complete();\r\n });\r\n\r\n return;\r\n }\r\n\r\n self.updateSlide(slide);\r\n\r\n // Simply show content if no effect\r\n // ================================\r\n if (!effect) {\r\n slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n if (!isRevealed && isMoved && slide.type === \"image\" && !slide.hasError) {\r\n slide.$content.hide().fadeIn(\"fast\");\r\n }\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Prepare for CSS transiton\r\n // =========================\r\n $.fancybox.stop($slide);\r\n\r\n //effectClassName = \"fancybox-animated fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-fx-\" + effect;\r\n effectClassName = \"fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-animated fancybox-fx-\" + effect;\r\n\r\n $slide.addClass(effectClassName).removeClass(\"fancybox-slide--current\"); //.addClass(effectClassName);\r\n\r\n slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n // Force reflow\r\n forceRedraw($slide);\r\n\r\n if (slide.type !== \"image\") {\r\n slide.$content.hide().show(0);\r\n }\r\n\r\n $.fancybox.animate(\r\n $slide,\r\n \"fancybox-slide--current\",\r\n duration,\r\n function () {\r\n $slide.removeClass(effectClassName).css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n },\r\n true\r\n );\r\n },\r\n\r\n // Check if we can and have to zoom from thumbnail\r\n //================================================\r\n\r\n getThumbPos: function (slide) {\r\n var rez = false,\r\n $thumb = slide.$thumb,\r\n thumbPos,\r\n btw,\r\n brw,\r\n bbw,\r\n blw;\r\n\r\n if (!$thumb || !inViewport($thumb[0])) {\r\n return false;\r\n }\r\n\r\n thumbPos = $.fancybox.getTranslate($thumb);\r\n\r\n btw = parseFloat($thumb.css(\"border-top-width\") || 0);\r\n brw = parseFloat($thumb.css(\"border-right-width\") || 0);\r\n bbw = parseFloat($thumb.css(\"border-bottom-width\") || 0);\r\n blw = parseFloat($thumb.css(\"border-left-width\") || 0);\r\n\r\n rez = {\r\n top: thumbPos.top + btw,\r\n left: thumbPos.left + blw,\r\n width: thumbPos.width - brw - blw,\r\n height: thumbPos.height - btw - bbw,\r\n scaleX: 1,\r\n scaleY: 1\r\n };\r\n\r\n return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false;\r\n },\r\n\r\n // Final adjustments after current gallery item is moved to position\r\n // and it`s content is loaded\r\n // ==================================================================\r\n\r\n complete: function () {\r\n var self = this,\r\n current = self.current,\r\n slides = {},\r\n $el;\r\n\r\n if (self.isMoved() || !current.isLoaded) {\r\n return;\r\n }\r\n\r\n if (!current.isComplete) {\r\n current.isComplete = true;\r\n\r\n current.$slide.siblings().trigger(\"onReset\");\r\n\r\n self.preload(\"inline\");\r\n\r\n // Trigger any CSS transiton inside the slide\r\n forceRedraw(current.$slide);\r\n\r\n current.$slide.addClass(\"fancybox-slide--complete\");\r\n\r\n // Remove unnecessary slides\r\n $.each(self.slides, function (key, slide) {\r\n if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) {\r\n slides[slide.pos] = slide;\r\n } else if (slide) {\r\n $.fancybox.stop(slide.$slide);\r\n\r\n slide.$slide.off().remove();\r\n }\r\n });\r\n\r\n self.slides = slides;\r\n }\r\n\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n\r\n self.trigger(\"afterShow\");\r\n\r\n // Autoplay first html5 video/audio\r\n if (!!current.opts.video.autoStart) {\r\n current.$slide\r\n .find(\"video,audio\")\r\n .filter(\":visible:first\")\r\n .trigger(\"play\")\r\n .one(\"ended\", function () {\r\n if (Document.exitFullscreen) {\r\n Document.exitFullscreen();\r\n } else if (this.webkitExitFullscreen) {\r\n this.webkitExitFullscreen();\r\n }\r\n\r\n self.next();\r\n });\r\n }\r\n\r\n // Try to focus on the first focusable element\r\n if (current.opts.autoFocus && current.contentType === \"html\") {\r\n // Look for the first input with autofocus attribute\r\n $el = current.$content.find(\"input[autofocus]:enabled:visible:first\");\r\n\r\n if ($el.length) {\r\n $el.trigger(\"focus\");\r\n } else {\r\n self.focus(null, true);\r\n }\r\n }\r\n\r\n // Avoid jumping\r\n current.$slide.scrollTop(0).scrollLeft(0);\r\n },\r\n\r\n // Preload next and previous slides\r\n // ================================\r\n\r\n preload: function (type) {\r\n var self = this,\r\n prev,\r\n next;\r\n\r\n if (self.group.length < 2) {\r\n return;\r\n }\r\n\r\n next = self.slides[self.currPos + 1];\r\n prev = self.slides[self.currPos - 1];\r\n\r\n if (prev && prev.type === type) {\r\n self.loadSlide(prev);\r\n }\r\n\r\n if (next && next.type === type) {\r\n self.loadSlide(next);\r\n }\r\n },\r\n\r\n // Try to find and focus on the first focusable element\r\n // ====================================================\r\n\r\n focus: function (e, firstRun) {\r\n var self = this,\r\n focusableStr = [\r\n \"a[href]\",\r\n \"area[href]\",\r\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\r\n \"select:not([disabled]):not([aria-hidden])\",\r\n \"textarea:not([disabled]):not([aria-hidden])\",\r\n \"button:not([disabled]):not([aria-hidden])\",\r\n \"iframe\",\r\n \"object\",\r\n \"embed\",\r\n \"video\",\r\n \"audio\",\r\n \"[contenteditable]\",\r\n '[tabindex]:not([tabindex^=\"-\"])'\r\n ].join(\",\"),\r\n focusableItems,\r\n focusedItemIndex;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n if (e || !self.current || !self.current.isComplete) {\r\n // Focus on any element inside fancybox\r\n focusableItems = self.$refs.container.find(\"*:visible\");\r\n } else {\r\n // Focus inside current slide\r\n focusableItems = self.current.$slide.find(\"*:visible\" + (firstRun ? \":not(.fancybox-close-small)\" : \"\"));\r\n }\r\n\r\n focusableItems = focusableItems.filter(focusableStr).filter(function () {\r\n return $(this).css(\"visibility\") !== \"hidden\" && !$(this).hasClass(\"disabled\");\r\n });\r\n\r\n if (focusableItems.length) {\r\n focusedItemIndex = focusableItems.index(document.activeElement);\r\n\r\n if (e && e.shiftKey) {\r\n // Back tab\r\n if (focusedItemIndex < 0 || focusedItemIndex == 0) {\r\n e.preventDefault();\r\n\r\n focusableItems.eq(focusableItems.length - 1).trigger(\"focus\");\r\n }\r\n } else {\r\n // Outside or Forward tab\r\n if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n\r\n focusableItems.eq(0).trigger(\"focus\");\r\n }\r\n }\r\n } else {\r\n self.$refs.container.trigger(\"focus\");\r\n }\r\n },\r\n\r\n // Activates current instance - brings container to the front and enables keyboard,\r\n // notifies other instances about deactivating\r\n // =================================================================================\r\n\r\n activate: function () {\r\n var self = this;\r\n\r\n // Deactivate all instances\r\n $(\".fancybox-container\").each(function () {\r\n var instance = $(this).data(\"FancyBox\");\r\n\r\n // Skip self and closing instances\r\n if (instance && instance.id !== self.id && !instance.isClosing) {\r\n instance.trigger(\"onDeactivate\");\r\n\r\n instance.removeEvents();\r\n\r\n instance.isVisible = false;\r\n }\r\n });\r\n\r\n self.isVisible = true;\r\n\r\n if (self.current || self.isIdle) {\r\n self.update();\r\n\r\n self.updateControls();\r\n }\r\n\r\n self.trigger(\"onActivate\");\r\n\r\n self.addEvents();\r\n },\r\n\r\n // Start closing procedure\r\n // This will start \"zoom-out\" animation if needed and clean everything up afterwards\r\n // =================================================================================\r\n\r\n close: function (e, d) {\r\n var self = this,\r\n current = self.current,\r\n effect,\r\n duration,\r\n $content,\r\n domRect,\r\n opacity,\r\n start,\r\n end;\r\n\r\n var done = function () {\r\n self.cleanUp(e);\r\n };\r\n\r\n if (self.isClosing) {\r\n return false;\r\n }\r\n\r\n self.isClosing = true;\r\n\r\n // If beforeClose callback prevents closing, make sure content is centered\r\n if (self.trigger(\"beforeClose\", e) === false) {\r\n self.isClosing = false;\r\n\r\n requestAFrame(function () {\r\n self.update();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n // Remove all events\r\n // If there are multiple instances, they will be set again by \"activate\" method\r\n self.removeEvents();\r\n\r\n $content = current.$content;\r\n effect = current.opts.animationEffect;\r\n duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0;\r\n\r\n current.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\");\r\n\r\n if (e !== true) {\r\n $.fancybox.stop(current.$slide);\r\n } else {\r\n effect = false;\r\n }\r\n\r\n // Remove other slides\r\n current.$slide\r\n .siblings()\r\n .trigger(\"onReset\")\r\n .remove();\r\n\r\n // Trigger animations\r\n if (duration) {\r\n self.$refs.container\r\n .removeClass(\"fancybox-is-open\")\r\n .addClass(\"fancybox-is-closing\")\r\n .css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n // Clean up\r\n self.hideLoading(current);\r\n\r\n self.hideControls(true);\r\n\r\n self.updateCursor();\r\n\r\n // Check if possible to zoom-out\r\n if (\r\n effect === \"zoom\" &&\r\n !($content && duration && current.type === \"image\" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current)))\r\n ) {\r\n effect = \"fade\";\r\n }\r\n\r\n if (effect === \"zoom\") {\r\n $.fancybox.stop($content);\r\n\r\n domRect = $.fancybox.getTranslate($content);\r\n\r\n start = {\r\n top: domRect.top,\r\n left: domRect.left,\r\n scaleX: domRect.width / end.width,\r\n scaleY: domRect.height / end.height,\r\n width: end.width,\r\n height: end.height\r\n };\r\n\r\n // Check if we need to animate opacity\r\n opacity = current.opts.zoomOpacity;\r\n\r\n if (opacity == \"auto\") {\r\n opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1;\r\n }\r\n\r\n if (opacity) {\r\n end.opacity = 0;\r\n }\r\n\r\n $.fancybox.setTranslate($content, start);\r\n\r\n forceRedraw($content);\r\n\r\n $.fancybox.animate($content, end, duration, done);\r\n\r\n return true;\r\n }\r\n\r\n if (effect && duration) {\r\n $.fancybox.animate(\r\n current.$slide.addClass(\"fancybox-slide--previous\").removeClass(\"fancybox-slide--current\"),\r\n \"fancybox-animated fancybox-fx-\" + effect,\r\n duration,\r\n done\r\n );\r\n } else {\r\n // If skip animation\r\n if (e === true) {\r\n setTimeout(done, duration);\r\n } else {\r\n done();\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // Final adjustments after removing the instance\r\n // =============================================\r\n\r\n cleanUp: function (e) {\r\n var self = this,\r\n instance,\r\n $focus = self.current.opts.$orig,\r\n x,\r\n y;\r\n\r\n self.current.$slide.trigger(\"onReset\");\r\n\r\n self.$refs.container.empty().remove();\r\n\r\n self.trigger(\"afterClose\", e);\r\n\r\n // Place back focus\r\n if (!!self.current.opts.backFocus) {\r\n if (!$focus || !$focus.length || !$focus.is(\":visible\")) {\r\n $focus = self.$trigger;\r\n }\r\n\r\n if ($focus && $focus.length) {\r\n x = window.scrollX;\r\n y = window.scrollY;\r\n\r\n $focus.trigger(\"focus\");\r\n\r\n $(\"html, body\")\r\n .scrollTop(y)\r\n .scrollLeft(x);\r\n }\r\n }\r\n\r\n self.current = null;\r\n\r\n // Check if there are other instances\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n instance.activate();\r\n } else {\r\n $(\"body\").removeClass(\"fancybox-active compensate-for-scrollbar\");\r\n\r\n $(\"#fancybox-style-noscroll\").remove();\r\n }\r\n },\r\n\r\n // Call callback and trigger an event\r\n // ==================================\r\n\r\n trigger: function (name, slide) {\r\n var args = Array.prototype.slice.call(arguments, 1),\r\n self = this,\r\n obj = slide && slide.opts ? slide : self.current,\r\n rez;\r\n\r\n if (obj) {\r\n args.unshift(obj);\r\n } else {\r\n obj = self;\r\n }\r\n\r\n args.unshift(self);\r\n\r\n if ($.isFunction(obj.opts[name])) {\r\n rez = obj.opts[name].apply(obj, args);\r\n }\r\n\r\n if (rez === false) {\r\n return rez;\r\n }\r\n\r\n if (name === \"afterClose\" || !self.$refs) {\r\n $D.trigger(name + \".fb\", args);\r\n } else {\r\n self.$refs.container.trigger(name + \".fb\", args);\r\n }\r\n },\r\n\r\n // Update infobar values, navigation button states and reveal caption\r\n // ==================================================================\r\n\r\n updateControls: function () {\r\n var self = this,\r\n current = self.current,\r\n index = current.index,\r\n $container = self.$refs.container,\r\n $caption = self.$refs.caption,\r\n caption = current.opts.caption;\r\n\r\n // Recalculate content dimensions\r\n current.$slide.trigger(\"refresh\");\r\n\r\n // Set caption\r\n if (caption && caption.length) {\r\n self.$caption = $caption;\r\n\r\n $caption\r\n .children()\r\n .eq(0)\r\n .html(caption);\r\n } else {\r\n self.$caption = null;\r\n }\r\n\r\n if (!self.hasHiddenControls && !self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n // Update info and navigation elements\r\n $container.find(\"[data-fancybox-count]\").html(self.group.length);\r\n $container.find(\"[data-fancybox-index]\").html(index + 1);\r\n\r\n $container.find(\"[data-fancybox-prev]\").prop(\"disabled\", !current.opts.loop && index <= 0);\r\n $container.find(\"[data-fancybox-next]\").prop(\"disabled\", !current.opts.loop && index >= self.group.length - 1);\r\n\r\n if (current.type === \"image\") {\r\n // Re-enable buttons; update download button source\r\n $container\r\n .find(\"[data-fancybox-zoom]\")\r\n .show()\r\n .end()\r\n .find(\"[data-fancybox-download]\")\r\n .attr(\"href\", current.opts.image.src || current.src)\r\n .show();\r\n } else if (current.opts.toolbar) {\r\n $container.find(\"[data-fancybox-download],[data-fancybox-zoom]\").hide();\r\n }\r\n\r\n // Make sure focus is not on disabled button/element\r\n if ($(document.activeElement).is(\":hidden,[disabled]\")) {\r\n self.$refs.container.trigger(\"focus\");\r\n }\r\n },\r\n\r\n // Hide toolbar and caption\r\n // ========================\r\n\r\n hideControls: function (andCaption) {\r\n var self = this,\r\n arr = [\"infobar\", \"toolbar\", \"nav\"];\r\n\r\n if (andCaption || !self.current.opts.preventCaptionOverlap) {\r\n arr.push(\"caption\");\r\n }\r\n\r\n this.$refs.container.removeClass(\r\n arr\r\n .map(function (i) {\r\n return \"fancybox-show-\" + i;\r\n })\r\n .join(\" \")\r\n );\r\n\r\n this.hasHiddenControls = true;\r\n },\r\n\r\n showControls: function () {\r\n var self = this,\r\n opts = self.current ? self.current.opts : self.opts,\r\n $container = self.$refs.container;\r\n\r\n self.hasHiddenControls = false;\r\n self.idleSecondsCounter = 0;\r\n\r\n $container\r\n .toggleClass(\"fancybox-show-toolbar\", !!(opts.toolbar && opts.buttons))\r\n .toggleClass(\"fancybox-show-infobar\", !!(opts.infobar && self.group.length > 1))\r\n .toggleClass(\"fancybox-show-caption\", !!self.$caption)\r\n .toggleClass(\"fancybox-show-nav\", !!(opts.arrows && self.group.length > 1))\r\n .toggleClass(\"fancybox-is-modal\", !!opts.modal);\r\n },\r\n\r\n // Toggle toolbar and caption\r\n // ==========================\r\n\r\n toggleControls: function () {\r\n if (this.hasHiddenControls) {\r\n this.showControls();\r\n } else {\r\n this.hideControls();\r\n }\r\n }\r\n });\r\n\r\n $.fancybox = {\r\n version: \"3.5.7\",\r\n defaults: defaults,\r\n\r\n // Get current instance and execute a command.\r\n //\r\n // Examples of usage:\r\n //\r\n // $instance = $.fancybox.getInstance();\r\n // $.fancybox.getInstance().jumpTo( 1 );\r\n // $.fancybox.getInstance( 'jumpTo', 1 );\r\n // $.fancybox.getInstance( function() {\r\n // console.info( this.currIndex );\r\n // });\r\n // ======================================================\r\n\r\n getInstance: function (command) {\r\n var instance = $('.fancybox-container:not(\".fancybox-is-closing\"):last').data(\"FancyBox\"),\r\n args = Array.prototype.slice.call(arguments, 1);\r\n\r\n if (instance instanceof FancyBox) {\r\n if ($.type(command) === \"string\") {\r\n instance[command].apply(instance, args);\r\n } else if ($.type(command) === \"function\") {\r\n command.apply(instance, args);\r\n }\r\n\r\n return instance;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Create new instance\r\n // ===================\r\n\r\n open: function (items, opts, index) {\r\n return new FancyBox(items, opts, index);\r\n },\r\n\r\n // Close current or all instances\r\n // ==============================\r\n\r\n close: function (all) {\r\n var instance = this.getInstance();\r\n\r\n if (instance) {\r\n instance.close();\r\n\r\n // Try to find and close next instance\r\n if (all === true) {\r\n this.close(all);\r\n }\r\n }\r\n },\r\n\r\n // Close all instances and unbind all events\r\n // =========================================\r\n\r\n destroy: function () {\r\n this.close(true);\r\n\r\n $D.add(\"body\").off(\"click.fb-start\", \"**\");\r\n },\r\n\r\n // Try to detect mobile devices\r\n // ============================\r\n\r\n isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\r\n // Detect if 'translate3d' support is available\r\n // ============================================\r\n\r\n use3d: (function () {\r\n var div = document.createElement(\"div\");\r\n\r\n return (\r\n window.getComputedStyle &&\r\n window.getComputedStyle(div) &&\r\n window.getComputedStyle(div).getPropertyValue(\"transform\") &&\r\n !(document.documentMode && document.documentMode < 11)\r\n );\r\n })(),\r\n\r\n // Helper function to get current visual state of an element\r\n // returns array[ top, left, horizontal-scale, vertical-scale, opacity ]\r\n // =====================================================================\r\n\r\n getTranslate: function ($el) {\r\n var domRect;\r\n\r\n if (!$el || !$el.length) {\r\n return false;\r\n }\r\n\r\n domRect = $el[0].getBoundingClientRect();\r\n\r\n return {\r\n top: domRect.top || 0,\r\n left: domRect.left || 0,\r\n width: domRect.width,\r\n height: domRect.height,\r\n opacity: parseFloat($el.css(\"opacity\"))\r\n };\r\n },\r\n\r\n // Shortcut for setting \"translate3d\" properties for element\r\n // Can set be used to set opacity, too\r\n // ========================================================\r\n\r\n setTranslate: function ($el, props) {\r\n var str = \"\",\r\n css = {};\r\n\r\n if (!$el || !props) {\r\n return;\r\n }\r\n\r\n if (props.left !== undefined || props.top !== undefined) {\r\n str =\r\n (props.left === undefined ? $el.position().left : props.left) +\r\n \"px, \" +\r\n (props.top === undefined ? $el.position().top : props.top) +\r\n \"px\";\r\n\r\n if (this.use3d) {\r\n str = \"translate3d(\" + str + \", 0px)\";\r\n } else {\r\n str = \"translate(\" + str + \")\";\r\n }\r\n }\r\n\r\n if (props.scaleX !== undefined && props.scaleY !== undefined) {\r\n str += \" scale(\" + props.scaleX + \", \" + props.scaleY + \")\";\r\n } else if (props.scaleX !== undefined) {\r\n str += \" scaleX(\" + props.scaleX + \")\";\r\n }\r\n\r\n if (str.length) {\r\n css.transform = str;\r\n }\r\n\r\n if (props.opacity !== undefined) {\r\n css.opacity = props.opacity;\r\n }\r\n\r\n if (props.width !== undefined) {\r\n css.width = props.width;\r\n }\r\n\r\n if (props.height !== undefined) {\r\n css.height = props.height;\r\n }\r\n\r\n return $el.css(css);\r\n },\r\n\r\n // Simple CSS transition handler\r\n // =============================\r\n\r\n animate: function ($el, to, duration, callback, leaveAnimationName) {\r\n var self = this,\r\n from;\r\n\r\n if ($.isFunction(duration)) {\r\n callback = duration;\r\n duration = null;\r\n }\r\n\r\n self.stop($el);\r\n\r\n from = self.getTranslate($el);\r\n\r\n $el.on(transitionEnd, function (e) {\r\n // Skip events from child elements and z-index change\r\n if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == \"z-index\")) {\r\n return;\r\n }\r\n\r\n self.stop($el);\r\n\r\n if ($.isNumeric(duration)) {\r\n $el.css(\"transition-duration\", \"\");\r\n }\r\n\r\n if ($.isPlainObject(to)) {\r\n if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n self.setTranslate($el, {\r\n top: to.top,\r\n left: to.left,\r\n width: from.width * to.scaleX,\r\n height: from.height * to.scaleY,\r\n scaleX: 1,\r\n scaleY: 1\r\n });\r\n }\r\n } else if (leaveAnimationName !== true) {\r\n $el.removeClass(to);\r\n }\r\n\r\n if ($.isFunction(callback)) {\r\n callback(e);\r\n }\r\n });\r\n\r\n if ($.isNumeric(duration)) {\r\n $el.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n // Start animation by changing CSS properties or class name\r\n if ($.isPlainObject(to)) {\r\n if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n delete to.width;\r\n delete to.height;\r\n\r\n if ($el.parent().hasClass(\"fancybox-slide--image\")) {\r\n $el.parent().addClass(\"fancybox-is-scaling\");\r\n }\r\n }\r\n\r\n $.fancybox.setTranslate($el, to);\r\n } else {\r\n $el.addClass(to);\r\n }\r\n\r\n // Make sure that `transitionend` callback gets fired\r\n $el.data(\r\n \"timer\",\r\n setTimeout(function () {\r\n $el.trigger(transitionEnd);\r\n }, duration + 33)\r\n );\r\n },\r\n\r\n stop: function ($el, callCallback) {\r\n if ($el && $el.length) {\r\n clearTimeout($el.data(\"timer\"));\r\n\r\n if (callCallback) {\r\n $el.trigger(transitionEnd);\r\n }\r\n\r\n $el.off(transitionEnd).css(\"transition-duration\", \"\");\r\n\r\n $el.parent().removeClass(\"fancybox-is-scaling\");\r\n }\r\n }\r\n };\r\n\r\n // Default click handler for \"fancyboxed\" links\r\n // ============================================\r\n\r\n function _run(e, opts) {\r\n var items = [],\r\n index = 0,\r\n $target,\r\n value,\r\n instance;\r\n\r\n // Avoid opening multiple times\r\n if (e && e.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n opts = opts || {};\r\n\r\n if (e && e.data) {\r\n opts = mergeOpts(e.data.options, opts);\r\n }\r\n\r\n $target = opts.$target || $(e.currentTarget).trigger(\"blur\");\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance && instance.$trigger && instance.$trigger.is($target)) {\r\n return;\r\n }\r\n\r\n if (opts.selector) {\r\n items = $(opts.selector);\r\n } else {\r\n // Get all related items and find index for clicked one\r\n value = $target.attr(\"data-fancybox\") || \"\";\r\n\r\n if (value) {\r\n items = e.data ? e.data.items : [];\r\n items = items.length ? items.filter('[data-fancybox=\"' + value + '\"]') : $('[data-fancybox=\"' + value + '\"]');\r\n } else {\r\n items = [$target];\r\n }\r\n }\r\n\r\n index = $(items).index($target);\r\n\r\n // Sometimes current item can not be found\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n\r\n instance = $.fancybox.open(items, opts, index);\r\n\r\n // Save last active element\r\n instance.$trigger = $target;\r\n }\r\n\r\n // Create a jQuery plugin\r\n // ======================\r\n\r\n $.fn.fancybox = function (options) {\r\n var selector;\r\n\r\n options = options || {};\r\n selector = options.selector || false;\r\n\r\n if (selector) {\r\n // Use body element instead of document so it executes first\r\n $(\"body\")\r\n .off(\"click.fb-start\", selector)\r\n .on(\"click.fb-start\", selector, {\r\n options: options\r\n }, _run);\r\n } else {\r\n this.off(\"click.fb-start\").on(\r\n \"click.fb-start\", {\r\n items: this,\r\n options: options\r\n },\r\n _run\r\n );\r\n }\r\n\r\n return this;\r\n };\r\n\r\n // Self initializing plugin for all elements having `data-fancybox` attribute\r\n // ==========================================================================\r\n\r\n $D.on(\"click.fb-start\", \"[data-fancybox]\", _run);\r\n\r\n // Enable \"trigger elements\"\r\n // =========================\r\n\r\n $D.on(\"click.fb-start\", \"[data-fancybox-trigger]\", function (e) {\r\n $('[data-fancybox=\"' + $(this).attr(\"data-fancybox-trigger\") + '\"]')\r\n .eq($(this).attr(\"data-fancybox-index\") || 0)\r\n .trigger(\"click.fb-start\", {\r\n $trigger: $(this)\r\n });\r\n });\r\n\r\n // Track focus event for better accessibility styling\r\n // ==================================================\r\n (function () {\r\n var buttonStr = \".fancybox-button\",\r\n focusStr = \"fancybox-focus\",\r\n $pressed = null;\r\n\r\n $D.on(\"mousedown mouseup focus blur\", buttonStr, function (e) {\r\n switch (e.type) {\r\n case \"mousedown\":\r\n $pressed = $(this);\r\n break;\r\n case \"mouseup\":\r\n $pressed = null;\r\n break;\r\n case \"focusin\":\r\n $(buttonStr).removeClass(focusStr);\r\n\r\n if (!$(this).is($pressed) && !$(this).is(\"[disabled]\")) {\r\n $(this).addClass(focusStr);\r\n }\r\n break;\r\n case \"focusout\":\r\n $(buttonStr).removeClass(focusStr);\r\n break;\r\n }\r\n });\r\n })();\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n(function ($) {\r\n \"use strict\";\r\n\r\n // Object containing properties for each media type\r\n var defaults = {\r\n youtube: {\r\n matcher: /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n params: {\r\n autoplay: 1,\r\n autohide: 1,\r\n fs: 1,\r\n rel: 0,\r\n hd: 1,\r\n wmode: \"transparent\",\r\n enablejsapi: 1,\r\n html5: 1\r\n },\r\n paramPlace: 8,\r\n type: \"iframe\",\r\n url: \"https://www.youtube-nocookie.com/embed/$4\",\r\n thumb: \"https://img.youtube.com/vi/$4/hqdefault.jpg\"\r\n },\r\n\r\n vimeo: {\r\n matcher: /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n params: {\r\n autoplay: 1,\r\n hd: 1,\r\n show_title: 1,\r\n show_byline: 1,\r\n show_portrait: 0,\r\n fullscreen: 1\r\n },\r\n paramPlace: 3,\r\n type: \"iframe\",\r\n url: \"//player.vimeo.com/video/$2\"\r\n },\r\n\r\n instagram: {\r\n matcher: /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n type: \"image\",\r\n url: \"//$1/p/$2/media/?size=l\"\r\n },\r\n\r\n // Examples:\r\n // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z\r\n // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en\r\n // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n gmap_place: {\r\n matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n type: \"iframe\",\r\n url: function (rez) {\r\n return (\r\n \"//maps.google.\" +\r\n rez[2] +\r\n \"/?ll=\" +\r\n (rez[9] ? rez[9] + \"&z=\" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\\//, \"&\") : \"\") : rez[12] + \"\").replace(/\\?/, \"&\") +\r\n \"&output=\" +\r\n (rez[12] && rez[12].indexOf(\"layer=c\") > 0 ? \"svembed\" : \"embed\")\r\n );\r\n }\r\n },\r\n\r\n // Examples:\r\n // https://www.google.com/maps/search/Empire+State+Building/\r\n // https://www.google.com/maps/search/?api=1&query=centurylink+field\r\n // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393\r\n gmap_search: {\r\n matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,\r\n type: \"iframe\",\r\n url: function (rez) {\r\n return \"//maps.google.\" + rez[2] + \"/maps?q=\" + rez[5].replace(\"query=\", \"q=\").replace(\"api=1\", \"\") + \"&output=embed\";\r\n }\r\n }\r\n };\r\n\r\n // Formats matching url to final form\r\n var format = function (url, rez, params) {\r\n if (!url) {\r\n return;\r\n }\r\n\r\n params = params || \"\";\r\n\r\n if ($.type(params) === \"object\") {\r\n params = $.param(params, true);\r\n }\r\n\r\n $.each(rez, function (key, value) {\r\n url = url.replace(\"$\" + key, value || \"\");\r\n });\r\n\r\n if (params.length) {\r\n url += (url.indexOf(\"?\") > 0 ? \"&\" : \"?\") + params;\r\n }\r\n\r\n return url;\r\n };\r\n\r\n $(document).on(\"objectNeedsType.fb\", function (e, instance, item) {\r\n var url = item.src || \"\",\r\n type = false,\r\n media,\r\n thumb,\r\n rez,\r\n params,\r\n urlParams,\r\n paramObj,\r\n provider;\r\n\r\n media = $.extend(true, {}, defaults, item.opts.media);\r\n\r\n // Look for any matching media type\r\n $.each(media, function (providerName, providerOpts) {\r\n rez = url.match(providerOpts.matcher);\r\n\r\n if (!rez) {\r\n return;\r\n }\r\n\r\n type = providerOpts.type;\r\n provider = providerName;\r\n paramObj = {};\r\n\r\n if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) {\r\n urlParams = rez[providerOpts.paramPlace];\r\n\r\n if (urlParams[0] == \"?\") {\r\n urlParams = urlParams.substring(1);\r\n }\r\n\r\n urlParams = urlParams.split(\"&\");\r\n\r\n for (var m = 0; m < urlParams.length; ++m) {\r\n var p = urlParams[m].split(\"=\", 2);\r\n\r\n if (p.length == 2) {\r\n paramObj[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\r\n }\r\n }\r\n }\r\n\r\n params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj);\r\n\r\n url =\r\n $.type(providerOpts.url) === \"function\" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params);\r\n\r\n thumb =\r\n $.type(providerOpts.thumb) === \"function\" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez);\r\n\r\n if (providerName === \"youtube\") {\r\n url = url.replace(/&t=((\\d+)m)?(\\d+)s/, function (match, p1, m, s) {\r\n return \"&start=\" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10));\r\n });\r\n } else if (providerName === \"vimeo\") {\r\n url = url.replace(\"&%23\", \"#\");\r\n }\r\n\r\n return false;\r\n });\r\n\r\n // If it is found, then change content type and update the url\r\n\r\n if (type) {\r\n if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) {\r\n item.opts.thumb = thumb;\r\n }\r\n\r\n if (type === \"iframe\") {\r\n item.opts = $.extend(true, item.opts, {\r\n iframe: {\r\n preload: false,\r\n attr: {\r\n scrolling: \"no\"\r\n }\r\n }\r\n });\r\n }\r\n\r\n $.extend(item, {\r\n type: type,\r\n src: url,\r\n origSrc: item.src,\r\n contentSource: provider,\r\n contentType: type === \"image\" ? \"image\" : provider == \"gmap_place\" || provider == \"gmap_search\" ? \"map\" : \"video\"\r\n });\r\n } else if (url) {\r\n item.type = item.opts.defaultType;\r\n }\r\n });\r\n\r\n // Load YouTube/Video API on request to detect when video finished playing\r\n var VideoAPILoader = {\r\n youtube: {\r\n src: \"https://www.youtube.com/iframe_api\",\r\n class: \"YT\",\r\n loading: false,\r\n loaded: false\r\n },\r\n\r\n vimeo: {\r\n src: \"https://player.vimeo.com/api/player.js\",\r\n class: \"Vimeo\",\r\n loading: false,\r\n loaded: false\r\n },\r\n\r\n load: function (vendor) {\r\n var _this = this,\r\n script;\r\n\r\n if (this[vendor].loaded) {\r\n setTimeout(function () {\r\n _this.done(vendor);\r\n });\r\n return;\r\n }\r\n\r\n if (this[vendor].loading) {\r\n return;\r\n }\r\n\r\n this[vendor].loading = true;\r\n\r\n script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.src = this[vendor].src;\r\n\r\n if (vendor === \"youtube\") {\r\n window.onYouTubeIframeAPIReady = function () {\r\n _this[vendor].loaded = true;\r\n _this.done(vendor);\r\n };\r\n } else {\r\n script.onload = function () {\r\n _this[vendor].loaded = true;\r\n _this.done(vendor);\r\n };\r\n }\r\n\r\n document.body.appendChild(script);\r\n },\r\n done: function (vendor) {\r\n var instance, $el, player;\r\n\r\n if (vendor === \"youtube\") {\r\n delete window.onYouTubeIframeAPIReady;\r\n }\r\n\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n $el = instance.current.$content.find(\"iframe\");\r\n\r\n if (vendor === \"youtube\" && YT !== undefined && YT) {\r\n player = new YT.Player($el.attr(\"id\"), {\r\n events: {\r\n onStateChange: function (e) {\r\n if (e.data == 0) {\r\n instance.next();\r\n }\r\n }\r\n }\r\n });\r\n } else if (vendor === \"vimeo\" && Vimeo !== undefined && Vimeo) {\r\n player = new Vimeo.Player($el);\r\n\r\n player.on(\"ended\", function () {\r\n instance.next();\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n $(document).on({\r\n \"afterShow.fb\": function (e, instance, current) {\r\n if (instance.group.length > 1 && (current.contentSource === \"youtube\" || current.contentSource === \"vimeo\")) {\r\n VideoAPILoader.load(current.contentSource);\r\n }\r\n }\r\n });\r\n})(jQuery);\n// ==========================================================================\r\n//\r\n// Guestures\r\n// Adds touch guestures, handles click and tap events\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n \"use strict\";\r\n\r\n var requestAFrame = (function () {\r\n return (\r\n window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n }\r\n );\r\n })();\r\n\r\n var cancelAFrame = (function () {\r\n return (\r\n window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n }\r\n );\r\n })();\r\n\r\n var getPointerXY = function (e) {\r\n var result = [];\r\n\r\n e = e.originalEvent || e || window.e;\r\n e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];\r\n\r\n for (var key in e) {\r\n if (e[key].pageX) {\r\n result.push({\r\n x: e[key].pageX,\r\n y: e[key].pageY\r\n });\r\n } else if (e[key].clientX) {\r\n result.push({\r\n x: e[key].clientX,\r\n y: e[key].clientY\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var distance = function (point2, point1, what) {\r\n if (!point1 || !point2) {\r\n return 0;\r\n }\r\n\r\n if (what === \"x\") {\r\n return point2.x - point1.x;\r\n } else if (what === \"y\") {\r\n return point2.y - point1.y;\r\n }\r\n\r\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\r\n };\r\n\r\n var isClickable = function ($el) {\r\n if (\r\n $el.is('a,area,button,[role=\"button\"],input,label,select,summary,textarea,video,audio,iframe') ||\r\n $.isFunction($el.get(0).onclick) ||\r\n $el.data(\"selectable\")\r\n ) {\r\n return true;\r\n }\r\n\r\n // Check for attributes like data-fancybox-next or data-fancybox-close\r\n for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) {\r\n if (atts[i].nodeName.substr(0, 14) === \"data-fancybox-\") {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var hasScrollbars = function (el) {\r\n var overflowY = window.getComputedStyle(el)[\"overflow-y\"],\r\n overflowX = window.getComputedStyle(el)[\"overflow-x\"],\r\n vertical = (overflowY === \"scroll\" || overflowY === \"auto\") && el.scrollHeight > el.clientHeight,\r\n horizontal = (overflowX === \"scroll\" || overflowX === \"auto\") && el.scrollWidth > el.clientWidth;\r\n\r\n return vertical || horizontal;\r\n };\r\n\r\n var isScrollable = function ($el) {\r\n var rez = false;\r\n\r\n while (true) {\r\n rez = hasScrollbars($el.get(0));\r\n\r\n if (rez) {\r\n break;\r\n }\r\n\r\n $el = $el.parent();\r\n\r\n if (!$el.length || $el.hasClass(\"fancybox-stage\") || $el.is(\"body\")) {\r\n break;\r\n }\r\n }\r\n\r\n return rez;\r\n };\r\n\r\n var Guestures = function (instance) {\r\n var self = this;\r\n\r\n self.instance = instance;\r\n\r\n self.$bg = instance.$refs.bg;\r\n self.$stage = instance.$refs.stage;\r\n self.$container = instance.$refs.container;\r\n\r\n self.destroy();\r\n\r\n self.$container.on(\"touchstart.fb.touch mousedown.fb.touch\", $.proxy(self, \"ontouchstart\"));\r\n };\r\n\r\n Guestures.prototype.destroy = function () {\r\n var self = this;\r\n\r\n self.$container.off(\".fb.touch\");\r\n\r\n $(document).off(\".fb.touch\");\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n self.requestId = null;\r\n }\r\n\r\n if (self.tapped) {\r\n clearTimeout(self.tapped);\r\n self.tapped = null;\r\n }\r\n };\r\n\r\n Guestures.prototype.ontouchstart = function (e) {\r\n var self = this,\r\n $target = $(e.target),\r\n instance = self.instance,\r\n current = instance.current,\r\n $slide = current.$slide,\r\n $content = current.$content,\r\n isTouchDevice = e.type == \"touchstart\";\r\n\r\n // Do not respond to both (touch and mouse) events\r\n if (isTouchDevice) {\r\n self.$container.off(\"mousedown.fb.touch\");\r\n }\r\n\r\n // Ignore right click\r\n if (e.originalEvent && e.originalEvent.button == 2) {\r\n return;\r\n }\r\n\r\n // Ignore taping on links, buttons, input elements\r\n if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) {\r\n return;\r\n }\r\n // Ignore clicks on the scrollbar\r\n if (!$target.is(\"img\") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) {\r\n return;\r\n }\r\n\r\n // Ignore clicks while zooming or closing\r\n if (!current || instance.isAnimating || current.$slide.hasClass(\"fancybox-animated\")) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n self.realPoints = self.startPoints = getPointerXY(e);\r\n\r\n if (!self.startPoints.length) {\r\n return;\r\n }\r\n\r\n // Allow other scripts to catch touch event if \"touch\" is set to false\r\n if (current.touch) {\r\n e.stopPropagation();\r\n }\r\n\r\n self.startEvent = e;\r\n\r\n self.canTap = true;\r\n self.$target = $target;\r\n self.$content = $content;\r\n self.opts = current.opts.touch;\r\n\r\n self.isPanning = false;\r\n self.isSwiping = false;\r\n self.isZooming = false;\r\n self.isScrolling = false;\r\n self.canPan = instance.canPan();\r\n\r\n self.startTime = new Date().getTime();\r\n self.distanceX = self.distanceY = self.distance = 0;\r\n\r\n self.canvasWidth = Math.round($slide[0].clientWidth);\r\n self.canvasHeight = Math.round($slide[0].clientHeight);\r\n\r\n self.contentLastPos = null;\r\n self.contentStartPos = $.fancybox.getTranslate(self.$content) || {\r\n top: 0,\r\n left: 0\r\n };\r\n self.sliderStartPos = $.fancybox.getTranslate($slide);\r\n\r\n // Since position will be absolute, but we need to make it relative to the stage\r\n self.stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n self.sliderStartPos.top -= self.stagePos.top;\r\n self.sliderStartPos.left -= self.stagePos.left;\r\n\r\n self.contentStartPos.top -= self.stagePos.top;\r\n self.contentStartPos.left -= self.stagePos.left;\r\n\r\n $(document)\r\n .off(\".fb.touch\")\r\n .on(isTouchDevice ? \"touchend.fb.touch touchcancel.fb.touch\" : \"mouseup.fb.touch mouseleave.fb.touch\", $.proxy(self, \"ontouchend\"))\r\n .on(isTouchDevice ? \"touchmove.fb.touch\" : \"mousemove.fb.touch\", $.proxy(self, \"ontouchmove\"));\r\n\r\n if ($.fancybox.isMobile) {\r\n document.addEventListener(\"scroll\", self.onscroll, true);\r\n }\r\n\r\n // Skip if clicked outside the sliding area\r\n if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) {\r\n if ($target.is(\".fancybox-image\")) {\r\n e.preventDefault();\r\n }\r\n\r\n if (!($.fancybox.isMobile && $target.parents(\".fancybox-caption\").length)) {\r\n return;\r\n }\r\n }\r\n\r\n self.isScrollable = isScrollable($target) || isScrollable($target.parent());\r\n\r\n // Check if element is scrollable and try to prevent default behavior (scrolling)\r\n if (!($.fancybox.isMobile && self.isScrollable)) {\r\n e.preventDefault();\r\n }\r\n\r\n // One finger or mouse click - swipe or pan an image\r\n if (self.startPoints.length === 1 || current.hasError) {\r\n if (self.canPan) {\r\n $.fancybox.stop(self.$content);\r\n\r\n self.isPanning = true;\r\n } else {\r\n self.isSwiping = true;\r\n }\r\n\r\n self.$container.addClass(\"fancybox-is-grabbing\");\r\n }\r\n\r\n // Two fingers - zoom image\r\n if (self.startPoints.length === 2 && current.type === \"image\" && (current.isLoaded || current.$ghost)) {\r\n self.canTap = false;\r\n self.isSwiping = false;\r\n self.isPanning = false;\r\n\r\n self.isZooming = true;\r\n\r\n $.fancybox.stop(self.$content);\r\n\r\n self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft();\r\n self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop();\r\n\r\n self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width;\r\n self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height;\r\n\r\n self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]);\r\n }\r\n };\r\n\r\n Guestures.prototype.onscroll = function (e) {\r\n var self = this;\r\n\r\n self.isScrolling = true;\r\n\r\n document.removeEventListener(\"scroll\", self.onscroll, true);\r\n };\r\n\r\n Guestures.prototype.ontouchmove = function (e) {\r\n var self = this;\r\n\r\n // Make sure user has not released over iframe or disabled element\r\n if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) {\r\n self.ontouchend(e);\r\n return;\r\n }\r\n\r\n if (self.isScrolling) {\r\n self.canTap = false;\r\n return;\r\n }\r\n\r\n self.newPoints = getPointerXY(e);\r\n\r\n if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) {\r\n return;\r\n }\r\n\r\n if (!(self.isSwiping && self.isSwiping === true)) {\r\n e.preventDefault();\r\n }\r\n\r\n self.distanceX = distance(self.newPoints[0], self.startPoints[0], \"x\");\r\n self.distanceY = distance(self.newPoints[0], self.startPoints[0], \"y\");\r\n\r\n self.distance = distance(self.newPoints[0], self.startPoints[0]);\r\n\r\n // Skip false ontouchmove events (Chrome)\r\n if (self.distance > 0) {\r\n if (self.isSwiping) {\r\n self.onSwipe(e);\r\n } else if (self.isPanning) {\r\n self.onPan();\r\n } else if (self.isZooming) {\r\n self.onZoom();\r\n }\r\n }\r\n };\r\n\r\n Guestures.prototype.onSwipe = function (e) {\r\n var self = this,\r\n instance = self.instance,\r\n swiping = self.isSwiping,\r\n left = self.sliderStartPos.left || 0,\r\n angle;\r\n\r\n // If direction is not yet determined\r\n if (swiping === true) {\r\n // We need at least 10px distance to correctly calculate an angle\r\n if (Math.abs(self.distance) > 10) {\r\n self.canTap = false;\r\n\r\n if (instance.group.length < 2 && self.opts.vertical) {\r\n self.isSwiping = \"y\";\r\n } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === \"auto\" && $(window).width() > 800)) {\r\n self.isSwiping = \"x\";\r\n } else {\r\n angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI);\r\n\r\n self.isSwiping = angle > 45 && angle < 135 ? \"y\" : \"x\";\r\n }\r\n\r\n if (self.isSwiping === \"y\" && $.fancybox.isMobile && self.isScrollable) {\r\n self.isScrolling = true;\r\n\r\n return;\r\n }\r\n\r\n instance.isDragging = self.isSwiping;\r\n\r\n // Reset points to avoid jumping, because we dropped first swipes to calculate the angle\r\n self.startPoints = self.newPoints;\r\n\r\n $.each(instance.slides, function (index, slide) {\r\n var slidePos, stagePos;\r\n\r\n $.fancybox.stop(slide.$slide);\r\n\r\n slidePos = $.fancybox.getTranslate(slide.$slide);\r\n stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n slide.$slide\r\n .css({\r\n transform: \"\",\r\n opacity: \"\",\r\n \"transition-duration\": \"\"\r\n })\r\n .removeClass(\"fancybox-animated\")\r\n .removeClass(function (index, className) {\r\n return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n });\r\n\r\n if (slide.pos === instance.current.pos) {\r\n self.sliderStartPos.top = slidePos.top - stagePos.top;\r\n self.sliderStartPos.left = slidePos.left - stagePos.left;\r\n }\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: slidePos.top - stagePos.top,\r\n left: slidePos.left - stagePos.left\r\n });\r\n });\r\n\r\n // Stop slideshow\r\n if (instance.SlideShow && instance.SlideShow.isActive) {\r\n instance.SlideShow.stop();\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Sticky edges\r\n if (swiping == \"x\") {\r\n if (\r\n self.distanceX > 0 &&\r\n (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop))\r\n ) {\r\n left = left + Math.pow(self.distanceX, 0.8);\r\n } else if (\r\n self.distanceX < 0 &&\r\n (self.instance.group.length < 2 ||\r\n (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop))\r\n ) {\r\n left = left - Math.pow(-self.distanceX, 0.8);\r\n } else {\r\n left = left + self.distanceX;\r\n }\r\n }\r\n\r\n self.sliderLastPos = {\r\n top: swiping == \"x\" ? 0 : self.sliderStartPos.top + self.distanceY,\r\n left: left\r\n };\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n\r\n self.requestId = null;\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n if (self.sliderLastPos) {\r\n $.each(self.instance.slides, function (index, slide) {\r\n var pos = slide.pos - self.instance.currPos;\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: self.sliderLastPos.top,\r\n left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter\r\n });\r\n });\r\n\r\n self.$container.addClass(\"fancybox-is-sliding\");\r\n }\r\n });\r\n };\r\n\r\n Guestures.prototype.onPan = function () {\r\n var self = this;\r\n\r\n // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit)\r\n if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) {\r\n self.startPoints = self.newPoints;\r\n return;\r\n }\r\n\r\n self.canTap = false;\r\n\r\n self.contentLastPos = self.limitMovement();\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n });\r\n };\r\n\r\n // Make panning sticky to the edges\r\n Guestures.prototype.limitMovement = function () {\r\n var self = this;\r\n\r\n var canvasWidth = self.canvasWidth;\r\n var canvasHeight = self.canvasHeight;\r\n\r\n var distanceX = self.distanceX;\r\n var distanceY = self.distanceY;\r\n\r\n var contentStartPos = self.contentStartPos;\r\n\r\n var currentOffsetX = contentStartPos.left;\r\n var currentOffsetY = contentStartPos.top;\r\n\r\n var currentWidth = contentStartPos.width;\r\n var currentHeight = contentStartPos.height;\r\n\r\n var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY;\r\n\r\n if (currentWidth > canvasWidth) {\r\n newOffsetX = currentOffsetX + distanceX;\r\n } else {\r\n newOffsetX = currentOffsetX;\r\n }\r\n\r\n newOffsetY = currentOffsetY + distanceY;\r\n\r\n // Slow down proportionally to traveled distance\r\n minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5);\r\n minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5);\r\n maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n // ->\r\n if (distanceX > 0 && newOffsetX > minTranslateX) {\r\n newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0;\r\n }\r\n\r\n // <-\r\n if (distanceX < 0 && newOffsetX < maxTranslateX) {\r\n newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0;\r\n }\r\n\r\n // \\/\r\n if (distanceY > 0 && newOffsetY > minTranslateY) {\r\n newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0;\r\n }\r\n\r\n // /\\\r\n if (distanceY < 0 && newOffsetY < maxTranslateY) {\r\n newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0;\r\n }\r\n\r\n return {\r\n top: newOffsetY,\r\n left: newOffsetX\r\n };\r\n };\r\n\r\n Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) {\r\n var self = this;\r\n\r\n var canvasWidth = self.canvasWidth;\r\n var canvasHeight = self.canvasHeight;\r\n\r\n if (newWidth > canvasWidth) {\r\n newOffsetX = newOffsetX > 0 ? 0 : newOffsetX;\r\n newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;\r\n } else {\r\n // Center horizontally\r\n newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2);\r\n }\r\n\r\n if (newHeight > canvasHeight) {\r\n newOffsetY = newOffsetY > 0 ? 0 : newOffsetY;\r\n newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;\r\n } else {\r\n // Center vertically\r\n newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2);\r\n }\r\n\r\n return {\r\n top: newOffsetY,\r\n left: newOffsetX\r\n };\r\n };\r\n\r\n Guestures.prototype.onZoom = function () {\r\n var self = this;\r\n\r\n // Calculate current distance between points to get pinch ratio and new width and height\r\n var contentStartPos = self.contentStartPos;\r\n\r\n var currentWidth = contentStartPos.width;\r\n var currentHeight = contentStartPos.height;\r\n\r\n var currentOffsetX = contentStartPos.left;\r\n var currentOffsetY = contentStartPos.top;\r\n\r\n var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]);\r\n\r\n var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;\r\n\r\n var newWidth = Math.floor(currentWidth * pinchRatio);\r\n var newHeight = Math.floor(currentHeight * pinchRatio);\r\n\r\n // This is the translation due to pinch-zooming\r\n var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX;\r\n var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;\r\n\r\n // Point between the two touches\r\n var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft();\r\n var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop();\r\n\r\n // And this is the translation due to translation of the centerpoint\r\n // between the two fingers\r\n var translateFromTranslatingX = centerPointEndX - self.centerPointStartX;\r\n var translateFromTranslatingY = centerPointEndY - self.centerPointStartY;\r\n\r\n // The new offset is the old/current one plus the total translation\r\n var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX);\r\n var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY);\r\n\r\n var newPos = {\r\n top: newOffsetY,\r\n left: newOffsetX,\r\n scaleX: pinchRatio,\r\n scaleY: pinchRatio\r\n };\r\n\r\n self.canTap = false;\r\n\r\n self.newWidth = newWidth;\r\n self.newHeight = newHeight;\r\n\r\n self.contentLastPos = newPos;\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n });\r\n };\r\n\r\n Guestures.prototype.ontouchend = function (e) {\r\n var self = this;\r\n\r\n var swiping = self.isSwiping;\r\n var panning = self.isPanning;\r\n var zooming = self.isZooming;\r\n var scrolling = self.isScrolling;\r\n\r\n self.endPoints = getPointerXY(e);\r\n self.dMs = Math.max(new Date().getTime() - self.startTime, 1);\r\n\r\n self.$container.removeClass(\"fancybox-is-grabbing\");\r\n\r\n $(document).off(\".fb.touch\");\r\n\r\n document.removeEventListener(\"scroll\", self.onscroll, true);\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n\r\n self.requestId = null;\r\n }\r\n\r\n self.isSwiping = false;\r\n self.isPanning = false;\r\n self.isZooming = false;\r\n self.isScrolling = false;\r\n\r\n self.instance.isDragging = false;\r\n\r\n if (self.canTap) {\r\n return self.onTap(e);\r\n }\r\n\r\n self.speed = 100;\r\n\r\n // Speed in px/ms\r\n self.velocityX = (self.distanceX / self.dMs) * 0.5;\r\n self.velocityY = (self.distanceY / self.dMs) * 0.5;\r\n\r\n if (panning) {\r\n self.endPanning();\r\n } else if (zooming) {\r\n self.endZooming();\r\n } else {\r\n self.endSwiping(swiping, scrolling);\r\n }\r\n\r\n return;\r\n };\r\n\r\n Guestures.prototype.endSwiping = function (swiping, scrolling) {\r\n var self = this,\r\n ret = false,\r\n len = self.instance.group.length,\r\n distanceX = Math.abs(self.distanceX),\r\n canAdvance = swiping == \"x\" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50),\r\n speedX = 300;\r\n\r\n self.sliderLastPos = null;\r\n\r\n // Close if swiped vertically / navigate if horizontally\r\n if (swiping == \"y\" && !scrolling && Math.abs(self.distanceY) > 50) {\r\n // Continue vertical movement\r\n $.fancybox.animate(\r\n self.instance.current.$slide, {\r\n top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150,\r\n opacity: 0\r\n },\r\n 200\r\n );\r\n ret = self.instance.close(true, 250);\r\n } else if (canAdvance && self.distanceX > 0) {\r\n ret = self.instance.previous(speedX);\r\n } else if (canAdvance && self.distanceX < 0) {\r\n ret = self.instance.next(speedX);\r\n }\r\n\r\n if (ret === false && (swiping == \"x\" || swiping == \"y\")) {\r\n self.instance.centerSlide(200);\r\n }\r\n\r\n self.$container.removeClass(\"fancybox-is-sliding\");\r\n };\r\n\r\n // Limit panning from edges\r\n // ========================\r\n Guestures.prototype.endPanning = function () {\r\n var self = this,\r\n newOffsetX,\r\n newOffsetY,\r\n newPos;\r\n\r\n if (!self.contentLastPos) {\r\n return;\r\n }\r\n\r\n if (self.opts.momentum === false || self.dMs > 350) {\r\n newOffsetX = self.contentLastPos.left;\r\n newOffsetY = self.contentLastPos.top;\r\n } else {\r\n // Continue movement\r\n newOffsetX = self.contentLastPos.left + self.velocityX * 500;\r\n newOffsetY = self.contentLastPos.top + self.velocityY * 500;\r\n }\r\n\r\n newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height);\r\n\r\n newPos.width = self.contentStartPos.width;\r\n newPos.height = self.contentStartPos.height;\r\n\r\n $.fancybox.animate(self.$content, newPos, 366);\r\n };\r\n\r\n Guestures.prototype.endZooming = function () {\r\n var self = this;\r\n\r\n var current = self.instance.current;\r\n\r\n var newOffsetX, newOffsetY, newPos, reset;\r\n\r\n var newWidth = self.newWidth;\r\n var newHeight = self.newHeight;\r\n\r\n if (!self.contentLastPos) {\r\n return;\r\n }\r\n\r\n newOffsetX = self.contentLastPos.left;\r\n newOffsetY = self.contentLastPos.top;\r\n\r\n reset = {\r\n top: newOffsetY,\r\n left: newOffsetX,\r\n width: newWidth,\r\n height: newHeight,\r\n scaleX: 1,\r\n scaleY: 1\r\n };\r\n\r\n // Reset scalex/scaleY values; this helps for perfomance and does not break animation\r\n $.fancybox.setTranslate(self.$content, reset);\r\n\r\n if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) {\r\n self.instance.scaleToFit(150);\r\n } else if (newWidth > current.width || newHeight > current.height) {\r\n self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150);\r\n } else {\r\n newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight);\r\n\r\n $.fancybox.animate(self.$content, newPos, 150);\r\n }\r\n };\r\n\r\n Guestures.prototype.onTap = function (e) {\r\n var self = this;\r\n var $target = $(e.target);\r\n\r\n var instance = self.instance;\r\n var current = instance.current;\r\n\r\n var endPoints = (e && getPointerXY(e)) || self.startPoints;\r\n\r\n var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0;\r\n var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0;\r\n\r\n var where;\r\n\r\n var process = function (prefix) {\r\n var action = current.opts[prefix];\r\n\r\n if ($.isFunction(action)) {\r\n action = action.apply(instance, [current, e]);\r\n }\r\n\r\n if (!action) {\r\n return;\r\n }\r\n\r\n switch (action) {\r\n case \"close\":\r\n instance.close(self.startEvent);\r\n\r\n break;\r\n\r\n case \"toggleControls\":\r\n instance.toggleControls();\r\n\r\n break;\r\n\r\n case \"next\":\r\n instance.next();\r\n\r\n break;\r\n\r\n case \"nextOrClose\":\r\n if (instance.group.length > 1) {\r\n instance.next();\r\n } else {\r\n instance.close(self.startEvent);\r\n }\r\n\r\n break;\r\n\r\n case \"zoom\":\r\n if (current.type == \"image\" && (current.isLoaded || current.$ghost)) {\r\n if (instance.canPan()) {\r\n instance.scaleToFit();\r\n } else if (instance.isScaledDown()) {\r\n instance.scaleToActual(tapX, tapY);\r\n } else if (instance.group.length < 2) {\r\n instance.close(self.startEvent);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n // Ignore right click\r\n if (e.originalEvent && e.originalEvent.button == 2) {\r\n return;\r\n }\r\n\r\n // Skip if clicked on the scrollbar\r\n if (!$target.is(\"img\") && tapX > $target[0].clientWidth + $target.offset().left) {\r\n return;\r\n }\r\n\r\n // Check where is clicked\r\n if ($target.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\")) {\r\n where = \"Outside\";\r\n } else if ($target.is(\".fancybox-slide\")) {\r\n where = \"Slide\";\r\n } else if (\r\n instance.current.$content &&\r\n instance.current.$content\r\n .find($target)\r\n .addBack()\r\n .filter($target).length\r\n ) {\r\n where = \"Content\";\r\n } else {\r\n return;\r\n }\r\n\r\n // Check if this is a double tap\r\n if (self.tapped) {\r\n // Stop previously created single tap\r\n clearTimeout(self.tapped);\r\n self.tapped = null;\r\n\r\n // Skip if distance between taps is too big\r\n if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) {\r\n return this;\r\n }\r\n\r\n // OK, now we assume that this is a double-tap\r\n process(\"dblclick\" + where);\r\n } else {\r\n // Single tap will be processed if user has not clicked second time within 300ms\r\n // or there is no need to wait for double-tap\r\n self.tapX = tapX;\r\n self.tapY = tapY;\r\n\r\n if (current.opts[\"dblclick\" + where] && current.opts[\"dblclick\" + where] !== current.opts[\"click\" + where]) {\r\n self.tapped = setTimeout(function () {\r\n self.tapped = null;\r\n\r\n if (!instance.isAnimating) {\r\n process(\"click\" + where);\r\n }\r\n }, 500);\r\n } else {\r\n process(\"click\" + where);\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n $(document)\r\n .on(\"onActivate.fb\", function (e, instance) {\r\n if (instance && !instance.Guestures) {\r\n instance.Guestures = new Guestures(instance);\r\n }\r\n })\r\n .on(\"beforeClose.fb\", function (e, instance) {\r\n if (instance && instance.Guestures) {\r\n instance.Guestures.destroy();\r\n }\r\n });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// SlideShow\r\n// Enables slideshow functionality\r\n//\r\n// Example of usage:\r\n// $.fancybox.getInstance().SlideShow.start()\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n slideShow: '\"\r\n },\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000,\r\n progress: true\r\n }\r\n });\r\n\r\n var SlideShow = function (instance) {\r\n this.instance = instance;\r\n this.init();\r\n };\r\n\r\n $.extend(SlideShow.prototype, {\r\n timer: null,\r\n isActive: false,\r\n $button: null,\r\n\r\n init: function () {\r\n var self = this,\r\n instance = self.instance,\r\n opts = instance.group[instance.currIndex].opts.slideShow;\r\n\r\n self.$button = instance.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\", function () {\r\n self.toggle();\r\n });\r\n\r\n if (instance.group.length < 2 || !opts) {\r\n self.$button.hide();\r\n } else if (opts.progress) {\r\n self.$progress = $('
').appendTo(instance.$refs.inner);\r\n }\r\n },\r\n\r\n set: function (force) {\r\n var self = this,\r\n instance = self.instance,\r\n current = instance.current;\r\n\r\n // Check if reached last element\r\n if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) {\r\n if (self.isActive && current.contentType !== \"video\") {\r\n if (self.$progress) {\r\n $.fancybox.animate(self.$progress.show(), {\r\n scaleX: 1\r\n }, current.opts.slideShow.speed);\r\n }\r\n\r\n self.timer = setTimeout(function () {\r\n if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) {\r\n instance.jumpTo(0);\r\n } else {\r\n instance.next();\r\n }\r\n }, current.opts.slideShow.speed);\r\n }\r\n } else {\r\n self.stop();\r\n instance.idleSecondsCounter = 0;\r\n instance.showControls();\r\n }\r\n },\r\n\r\n clear: function () {\r\n var self = this;\r\n\r\n clearTimeout(self.timer);\r\n\r\n self.timer = null;\r\n\r\n if (self.$progress) {\r\n self.$progress.removeAttr(\"style\").hide();\r\n }\r\n },\r\n\r\n start: function () {\r\n var self = this,\r\n current = self.instance.current;\r\n\r\n if (current) {\r\n self.$button\r\n .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP)\r\n .removeClass(\"fancybox-button--play\")\r\n .addClass(\"fancybox-button--pause\");\r\n\r\n self.isActive = true;\r\n\r\n if (current.isComplete) {\r\n self.set(true);\r\n }\r\n\r\n self.instance.trigger(\"onSlideShowChange\", true);\r\n }\r\n },\r\n\r\n stop: function () {\r\n var self = this,\r\n current = self.instance.current;\r\n\r\n self.clear();\r\n\r\n self.$button\r\n .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START)\r\n .removeClass(\"fancybox-button--pause\")\r\n .addClass(\"fancybox-button--play\");\r\n\r\n self.isActive = false;\r\n\r\n self.instance.trigger(\"onSlideShowChange\", false);\r\n\r\n if (self.$progress) {\r\n self.$progress.removeAttr(\"style\").hide();\r\n }\r\n },\r\n\r\n toggle: function () {\r\n var self = this;\r\n\r\n if (self.isActive) {\r\n self.stop();\r\n } else {\r\n self.start();\r\n }\r\n }\r\n });\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n if (instance && !instance.SlideShow) {\r\n instance.SlideShow = new SlideShow(instance);\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (firstRun) {\r\n if (SlideShow && current.opts.slideShow.autoStart) {\r\n SlideShow.start();\r\n }\r\n } else if (SlideShow && SlideShow.isActive) {\r\n SlideShow.clear();\r\n }\r\n },\r\n\r\n \"afterShow.fb\": function (e, instance, current) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow && SlideShow.isActive) {\r\n SlideShow.set();\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n // \"P\" or Spacebar\r\n if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is(\"button,a,input\")) {\r\n keypress.preventDefault();\r\n\r\n SlideShow.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb onDeactivate.fb\": function (e, instance) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow) {\r\n SlideShow.stop();\r\n }\r\n }\r\n });\r\n\r\n // Page Visibility API to pause slideshow when window is not active\r\n $(document).on(\"visibilitychange\", function () {\r\n var instance = $.fancybox.getInstance(),\r\n SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow && SlideShow.isActive) {\r\n if (document.hidden) {\r\n SlideShow.clear();\r\n } else {\r\n SlideShow.set();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// FullScreen\r\n// Adds fullscreen functionality\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n // Collection of methods supported by user browser\r\n var fn = (function () {\r\n var fnMap = [\r\n [\"requestFullscreen\", \"exitFullscreen\", \"fullscreenElement\", \"fullscreenEnabled\", \"fullscreenchange\", \"fullscreenerror\"],\r\n // new WebKit\r\n [\r\n \"webkitRequestFullscreen\",\r\n \"webkitExitFullscreen\",\r\n \"webkitFullscreenElement\",\r\n \"webkitFullscreenEnabled\",\r\n \"webkitfullscreenchange\",\r\n \"webkitfullscreenerror\"\r\n ],\r\n // old WebKit (Safari 5.1)\r\n [\r\n \"webkitRequestFullScreen\",\r\n \"webkitCancelFullScreen\",\r\n \"webkitCurrentFullScreenElement\",\r\n \"webkitCancelFullScreen\",\r\n \"webkitfullscreenchange\",\r\n \"webkitfullscreenerror\"\r\n ],\r\n [\r\n \"mozRequestFullScreen\",\r\n \"mozCancelFullScreen\",\r\n \"mozFullScreenElement\",\r\n \"mozFullScreenEnabled\",\r\n \"mozfullscreenchange\",\r\n \"mozfullscreenerror\"\r\n ],\r\n [\"msRequestFullscreen\", \"msExitFullscreen\", \"msFullscreenElement\", \"msFullscreenEnabled\", \"MSFullscreenChange\", \"MSFullscreenError\"]\r\n ];\r\n\r\n var ret = {};\r\n\r\n for (var i = 0; i < fnMap.length; i++) {\r\n var val = fnMap[i];\r\n\r\n if (val && val[1] in document) {\r\n for (var j = 0; j < val.length; j++) {\r\n ret[fnMap[0][j]] = val[j];\r\n }\r\n\r\n return ret;\r\n }\r\n }\r\n\r\n return false;\r\n })();\r\n\r\n if (fn) {\r\n var FullScreen = {\r\n request: function (elem) {\r\n elem = elem || document.documentElement;\r\n\r\n elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT);\r\n },\r\n exit: function () {\r\n document[fn.exitFullscreen]();\r\n },\r\n toggle: function (elem) {\r\n elem = elem || document.documentElement;\r\n\r\n if (this.isFullscreen()) {\r\n this.exit();\r\n } else {\r\n this.request(elem);\r\n }\r\n },\r\n isFullscreen: function () {\r\n return Boolean(document[fn.fullscreenElement]);\r\n },\r\n enabled: function () {\r\n return Boolean(document[fn.fullscreenEnabled]);\r\n }\r\n };\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n fullScreen: '\"\r\n },\r\n fullScreen: {\r\n autoStart: false\r\n }\r\n });\r\n\r\n $(document).on(fn.fullscreenchange, function () {\r\n var isFullscreen = FullScreen.isFullscreen(),\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n // If image is zooming, then force to stop and reposition properly\r\n if (instance.current && instance.current.type === \"image\" && instance.isAnimating) {\r\n instance.isAnimating = false;\r\n\r\n instance.update(true, true, 0);\r\n\r\n if (!instance.isComplete) {\r\n instance.complete();\r\n }\r\n }\r\n\r\n instance.trigger(\"onFullscreenChange\", isFullscreen);\r\n\r\n instance.$refs.container.toggleClass(\"fancybox-is-fullscreen\", isFullscreen);\r\n\r\n instance.$refs.toolbar\r\n .find(\"[data-fancybox-fullscreen]\")\r\n .toggleClass(\"fancybox-button--fsenter\", !isFullscreen)\r\n .toggleClass(\"fancybox-button--fsexit\", isFullscreen);\r\n }\r\n });\r\n }\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var $container;\r\n\r\n if (!fn) {\r\n instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").remove();\r\n\r\n return;\r\n }\r\n\r\n if (instance && instance.group[instance.currIndex].opts.fullScreen) {\r\n $container = instance.$refs.container;\r\n\r\n $container.on(\"click.fb-fullscreen\", \"[data-fancybox-fullscreen]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n FullScreen.toggle();\r\n });\r\n\r\n if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) {\r\n FullScreen.request();\r\n }\r\n\r\n // Expose API\r\n instance.FullScreen = FullScreen;\r\n } else if (instance) {\r\n instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").hide();\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n // \"F\"\r\n if (instance && instance.FullScreen && keycode === 70) {\r\n keypress.preventDefault();\r\n\r\n instance.FullScreen.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance) {\r\n if (instance && instance.FullScreen && instance.$refs.container.hasClass(\"fancybox-is-fullscreen\")) {\r\n FullScreen.exit();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Thumbs\r\n// Displays thumbnails in a grid\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n var CLASS = \"fancybox-thumbs\",\r\n CLASS_ACTIVE = CLASS + \"-active\";\r\n\r\n // Make sure there are default values\r\n $.fancybox.defaults = $.extend(\r\n true, {\r\n btnTpl: {\r\n thumbs: '\"\r\n },\r\n thumbs: {\r\n autoStart: false, // Display thumbnails on opening\r\n hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n parentEl: \".fancybox-container\", // Container is injected into this element\r\n axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n }\r\n },\r\n $.fancybox.defaults\r\n );\r\n\r\n var FancyThumbs = function (instance) {\r\n this.init(instance);\r\n };\r\n\r\n $.extend(FancyThumbs.prototype, {\r\n $button: null,\r\n $grid: null,\r\n $list: null,\r\n isVisible: false,\r\n isActive: false,\r\n\r\n init: function (instance) {\r\n var self = this,\r\n group = instance.group,\r\n enabled = 0;\r\n\r\n self.instance = instance;\r\n self.opts = group[instance.currIndex].opts.thumbs;\r\n\r\n instance.Thumbs = self;\r\n\r\n self.$button = instance.$refs.toolbar.find(\"[data-fancybox-thumbs]\");\r\n\r\n // Enable thumbs if at least two group items have thumbnails\r\n for (var i = 0, len = group.length; i < len; i++) {\r\n if (group[i].thumb) {\r\n enabled++;\r\n }\r\n\r\n if (enabled > 1) {\r\n break;\r\n }\r\n }\r\n\r\n if (enabled > 1 && !!self.opts) {\r\n self.$button.removeAttr(\"style\").on(\"click\", function () {\r\n self.toggle();\r\n });\r\n\r\n self.isActive = true;\r\n } else {\r\n self.$button.hide();\r\n }\r\n },\r\n\r\n create: function () {\r\n var self = this,\r\n instance = self.instance,\r\n parentEl = self.opts.parentEl,\r\n list = [],\r\n src;\r\n\r\n if (!self.$grid) {\r\n // Create main element\r\n self.$grid = $('
').appendTo(\r\n instance.$refs.container\r\n .find(parentEl)\r\n .addBack()\r\n .filter(parentEl)\r\n );\r\n\r\n // Add \"click\" event that performs gallery navigation\r\n self.$grid.on(\"click\", \"a\", function () {\r\n instance.jumpTo($(this).attr(\"data-index\"));\r\n });\r\n }\r\n\r\n // Build the list\r\n if (!self.$list) {\r\n self.$list = $('
').appendTo(self.$grid);\r\n }\r\n\r\n $.each(instance.group, function (i, item) {\r\n src = item.thumb;\r\n\r\n if (!src && item.type === \"image\") {\r\n src = item.src;\r\n }\r\n\r\n list.push(\r\n '\"\r\n );\r\n });\r\n\r\n self.$list[0].innerHTML = list.join(\"\");\r\n\r\n if (self.opts.axis === \"x\") {\r\n // Set fixed width for list element to enable horizontal scrolling\r\n self.$list.width(\r\n parseInt(self.$grid.css(\"padding-right\"), 10) +\r\n instance.group.length *\r\n self.$list\r\n .children()\r\n .eq(0)\r\n .outerWidth(true)\r\n );\r\n }\r\n },\r\n\r\n focus: function (duration) {\r\n var self = this,\r\n $list = self.$list,\r\n $grid = self.$grid,\r\n thumb,\r\n thumbPos;\r\n\r\n if (!self.instance.current) {\r\n return;\r\n }\r\n\r\n thumb = $list\r\n .children()\r\n .removeClass(CLASS_ACTIVE)\r\n .filter('[data-index=\"' + self.instance.current.index + '\"]')\r\n .addClass(CLASS_ACTIVE);\r\n\r\n thumbPos = thumb.position();\r\n\r\n // Check if need to scroll to make current thumb visible\r\n if (self.opts.axis === \"y\" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) {\r\n $list.stop().animate({\r\n scrollTop: $list.scrollTop() + thumbPos.top\r\n },\r\n duration\r\n );\r\n } else if (\r\n self.opts.axis === \"x\" &&\r\n (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth()))\r\n ) {\r\n $list\r\n .parent()\r\n .stop()\r\n .animate({\r\n scrollLeft: thumbPos.left\r\n },\r\n duration\r\n );\r\n }\r\n },\r\n\r\n update: function () {\r\n var that = this;\r\n that.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\", this.isVisible);\r\n\r\n if (that.isVisible) {\r\n if (!that.$grid) {\r\n that.create();\r\n }\r\n\r\n that.instance.trigger(\"onThumbsShow\");\r\n\r\n that.focus(0);\r\n } else if (that.$grid) {\r\n that.instance.trigger(\"onThumbsHide\");\r\n }\r\n\r\n // Update content position\r\n that.instance.update();\r\n },\r\n\r\n hide: function () {\r\n this.isVisible = false;\r\n this.update();\r\n },\r\n\r\n show: function () {\r\n this.isVisible = true;\r\n this.update();\r\n },\r\n\r\n toggle: function () {\r\n this.isVisible = !this.isVisible;\r\n this.update();\r\n }\r\n });\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var Thumbs;\r\n\r\n if (instance && !instance.Thumbs) {\r\n Thumbs = new FancyThumbs(instance);\r\n\r\n if (Thumbs.isActive && Thumbs.opts.autoStart === true) {\r\n Thumbs.show();\r\n }\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, item, firstRun) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n if (Thumbs && Thumbs.isVisible) {\r\n Thumbs.focus(firstRun ? 0 : 250);\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n // \"G\"\r\n if (Thumbs && Thumbs.isActive && keycode === 71) {\r\n keypress.preventDefault();\r\n\r\n Thumbs.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) {\r\n Thumbs.$grid.hide();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n//// ==========================================================================\r\n//\r\n// Share\r\n// Displays simple form for sharing current url\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n share: '\"\r\n },\r\n share: {\r\n url: function (instance, item) {\r\n return (\r\n (!instance.currentHash && !(item.type === \"inline\" || item.type === \"html\") ? item.origSrc || item.src : false) || window.location\r\n );\r\n },\r\n tpl: '
' +\r\n \"

{{SHARE}}

\" +\r\n \"

\" +\r\n '' +\r\n '' +\r\n \"Facebook\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Twitter\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Pinterest\" +\r\n \"\" +\r\n \"

\" +\r\n '

' +\r\n \"
\"\r\n }\r\n });\r\n\r\n function escapeHtml(string) {\r\n var entityMap = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': \""\",\r\n \"'\": \"'\",\r\n \"/\": \"/\",\r\n \"`\": \"`\",\r\n \"=\": \"=\"\r\n };\r\n\r\n return String(string).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n return entityMap[s];\r\n });\r\n }\r\n\r\n $(document).on(\"click\", \"[data-fancybox-share]\", function () {\r\n var instance = $.fancybox.getInstance(),\r\n current = instance.current || null,\r\n url,\r\n tpl;\r\n\r\n if (!current) {\r\n return;\r\n }\r\n\r\n if ($.type(current.opts.share.url) === \"function\") {\r\n url = current.opts.share.url.apply(current, [instance, current]);\r\n }\r\n\r\n tpl = current.opts.share.tpl\r\n .replace(/\\{\\{media\\}\\}/g, current.type === \"image\" ? encodeURIComponent(current.src) : \"\")\r\n .replace(/\\{\\{url\\}\\}/g, encodeURIComponent(url))\r\n .replace(/\\{\\{url_raw\\}\\}/g, escapeHtml(url))\r\n .replace(/\\{\\{descr\\}\\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : \"\");\r\n\r\n $.fancybox.open({\r\n src: instance.translate(instance, tpl),\r\n type: \"html\",\r\n opts: {\r\n touch: false,\r\n animationEffect: false,\r\n afterLoad: function (shareInstance, shareCurrent) {\r\n // Close self if parent instance is closing\r\n instance.$refs.container.one(\"beforeClose.fb\", function () {\r\n shareInstance.close(null, 0);\r\n });\r\n\r\n // Opening links in a popup window\r\n shareCurrent.$content.find(\".fancybox-share__button\").click(function () {\r\n window.open(this.href, \"Share\", \"width=550, height=450\");\r\n return false;\r\n });\r\n },\r\n mobile: {\r\n autoFocus: false\r\n }\r\n }\r\n });\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Hash\r\n// Enables linking to each modal\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n \"use strict\";\r\n\r\n // Simple $.escapeSelector polyfill (for jQuery prior v3)\r\n if (!$.escapeSelector) {\r\n $.escapeSelector = function (sel) {\r\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\r\n var fcssescape = function (ch, asCodePoint) {\r\n if (asCodePoint) {\r\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n if (ch === \"\\0\") {\r\n return \"\\uFFFD\";\r\n }\r\n\r\n // Control characters and (dependent upon position) numbers get escaped as code points\r\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\r\n }\r\n\r\n // Other potentially-special ASCII characters get backslash-escaped\r\n return \"\\\\\" + ch;\r\n };\r\n\r\n return (sel + \"\").replace(rcssescape, fcssescape);\r\n };\r\n }\r\n\r\n // Get info about gallery name and current index from url\r\n function parseUrl() {\r\n var hash = window.location.hash.substr(1),\r\n rez = hash.split(\"-\"),\r\n index = rez.length > 1 && /^\\+?\\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1,\r\n gallery = rez.join(\"-\");\r\n\r\n return {\r\n hash: hash,\r\n /* Index is starting from 1 */\r\n index: index < 1 ? 1 : index,\r\n gallery: gallery\r\n };\r\n }\r\n\r\n // Trigger click evnt on links to open new fancyBox instance\r\n function triggerFromUrl(url) {\r\n if (url.gallery !== \"\") {\r\n // If we can find element matching 'data-fancybox' atribute,\r\n // then triggering click event should start fancyBox\r\n $(\"[data-fancybox='\" + $.escapeSelector(url.gallery) + \"']\")\r\n .eq(url.index - 1)\r\n .focus()\r\n .trigger(\"click.fb-start\");\r\n }\r\n }\r\n\r\n // Get gallery name from current instance\r\n function getGalleryID(instance) {\r\n var opts, ret;\r\n\r\n if (!instance) {\r\n return false;\r\n }\r\n\r\n opts = instance.current ? instance.current.opts : instance.opts;\r\n ret = opts.hash || (opts.$orig ? opts.$orig.data(\"fancybox\") || opts.$orig.data(\"fancybox-trigger\") : \"\");\r\n\r\n return ret === \"\" ? false : ret;\r\n }\r\n\r\n // Start when DOM becomes ready\r\n $(function () {\r\n // Check if user has disabled this module\r\n if ($.fancybox.defaults.hash === false) {\r\n return;\r\n }\r\n\r\n // Update hash when opening/closing fancyBox\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var url, gallery;\r\n\r\n if (instance.group[instance.currIndex].opts.hash === false) {\r\n return;\r\n }\r\n\r\n url = parseUrl();\r\n gallery = getGalleryID(instance);\r\n\r\n // Make sure gallery start index matches index from hash\r\n if (gallery && url.gallery && gallery == url.gallery) {\r\n instance.currIndex = url.index - 1;\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n var gallery;\r\n\r\n if (!current || current.opts.hash === false) {\r\n return;\r\n }\r\n\r\n // Check if need to update window hash\r\n gallery = getGalleryID(instance);\r\n\r\n if (!gallery) {\r\n return;\r\n }\r\n\r\n // Variable containing last hash value set by fancyBox\r\n // It will be used to determine if fancyBox needs to close after hash change is detected\r\n instance.currentHash = gallery + (instance.group.length > 1 ? \"-\" + (current.index + 1) : \"\");\r\n\r\n // If current hash is the same (this instance most likely is opened by hashchange), then do nothing\r\n if (window.location.hash === \"#\" + instance.currentHash) {\r\n return;\r\n }\r\n\r\n if (firstRun && !instance.origHash) {\r\n instance.origHash = window.location.hash;\r\n }\r\n\r\n if (instance.hashTimer) {\r\n clearTimeout(instance.hashTimer);\r\n }\r\n\r\n // Update hash\r\n instance.hashTimer = setTimeout(function () {\r\n if (\"replaceState\" in window.history) {\r\n window.history[firstRun ? \"pushState\" : \"replaceState\"]({},\r\n document.title,\r\n window.location.pathname + window.location.search + \"#\" + instance.currentHash\r\n );\r\n\r\n if (firstRun) {\r\n instance.hasCreatedHistory = true;\r\n }\r\n } else {\r\n window.location.hash = instance.currentHash;\r\n }\r\n\r\n instance.hashTimer = null;\r\n }, 300);\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance, current) {\r\n if (!current || current.opts.hash === false) {\r\n return;\r\n }\r\n\r\n clearTimeout(instance.hashTimer);\r\n\r\n // Goto previous history entry\r\n if (instance.currentHash && instance.hasCreatedHistory) {\r\n window.history.back();\r\n } else if (instance.currentHash) {\r\n if (\"replaceState\" in window.history) {\r\n window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || \"\"));\r\n } else {\r\n window.location.hash = instance.origHash;\r\n }\r\n }\r\n\r\n instance.currentHash = null;\r\n }\r\n });\r\n\r\n // Check if need to start/close after url has changed\r\n $(window).on(\"hashchange.fb\", function () {\r\n var url = parseUrl(),\r\n fb = null;\r\n\r\n // Find last fancyBox instance that has \"hash\"\r\n $.each(\r\n $(\".fancybox-container\")\r\n .get()\r\n .reverse(),\r\n function (index, value) {\r\n var tmp = $(value).data(\"FancyBox\");\r\n\r\n if (tmp && tmp.currentHash) {\r\n fb = tmp;\r\n return false;\r\n }\r\n }\r\n );\r\n\r\n if (fb) {\r\n // Now, compare hash values\r\n if (fb.currentHash !== url.gallery + \"-\" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) {\r\n fb.currentHash = null;\r\n\r\n fb.close();\r\n }\r\n } else if (url.gallery !== \"\") {\r\n triggerFromUrl(url);\r\n }\r\n });\r\n\r\n // Check current hash and trigger click event on matching element to start fancyBox, if needed\r\n setTimeout(function () {\r\n if (!$.fancybox.getInstance()) {\r\n triggerFromUrl(parseUrl());\r\n }\r\n }, 50);\r\n });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Wheel\r\n// Basic mouse weheel support for gallery navigation\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n var prevTime = new Date().getTime();\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance, current) {\r\n instance.$refs.stage.on(\"mousewheel DOMMouseScroll wheel MozMousePixelScroll\", function (e) {\r\n var current = instance.current,\r\n currTime = new Date().getTime();\r\n\r\n if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === \"auto\" && current.type !== \"image\")) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (current.$slide.hasClass(\"fancybox-animated\")) {\r\n return;\r\n }\r\n\r\n e = e.originalEvent || e;\r\n\r\n if (currTime - prevTime < 250) {\r\n return;\r\n }\r\n\r\n prevTime = currTime;\r\n\r\n instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? \"next\" : \"previous\"]();\r\n });\r\n }\r\n });\r\n})(document, jQuery);","var $ = require(\"jquery\");\r\n\r\n(function () {\r\n var expandable = '[data-expandable]';\r\n var expandableToggle = '[data-expandable-toggle]';\r\n var expandableContent = '[data-expandable-content]';\r\n\r\n const hash = window.location.hash;\r\n\r\n $(document).on('click', expandableToggle, toggleExpand);\r\n\r\n function toggleExpand(e) {\r\n e.preventDefault();\r\n\r\n var $self = $(this);\r\n var $expandable = $self.closest(expandable)\r\n $expandable.toggleClass('open');\r\n $expandable.find(expandableContent).slideToggle('fast');\r\n\r\n var ariaExpandable = $self.attr('aria-expanded');\r\n $self.attr('aria-expanded', ariaExpandable == 'true' ? 'false' : 'true');\r\n $self.toggleClass('collapsed');\r\n\r\n var arrowIcon = $expandable.find(\".Icon\");\r\n arrowIcon.toggleClass(\"-open\");\r\n\r\n }\r\n\r\n if (hash) {\r\n const $elementToExpand = $(hash)\r\n const $expandable = $elementToExpand.closest(expandable)\r\n $expandable.toggleClass('open');\r\n $expandable.find(expandableContent).slideToggle('fast');\r\n\r\n const ariaExpandable = $elementToExpand.attr('aria-expanded');\r\n $elementToExpand.attr('aria-expanded', ariaExpandable == 'true' ? 'false' : 'true');\r\n $elementToExpand.toggleClass('collapsed');\r\n\r\n const arrowIcon = $expandable.find(\".Icon\");\r\n arrowIcon.toggleClass(\"-open\");\r\n }\r\n})();","const { error } = require(\"jquery\");\r\nvar $ = require(\"jquery\");\r\n\r\n(function () {\r\n $(document).on('focus', '.input-validation-error', function () {\r\n $(this).removeClass('input-validation-error');\r\n if ($(this).parents('.validation-container').length > 0) {\r\n $(this).parents('.validation-container').siblings('.Form-validation').remove();\r\n }\r\n else {\r\n $(this).siblings('.Form-validation').remove();\r\n }\r\n\r\n $(this).removeClass('input-validation-error');\r\n\r\n const errorMessage = $(this).siblings(\".field-validation-error\")\r\n errorMessage.hide();\r\n })\r\n})();","import jquery from \"jquery\";\r\n\r\nexport default (window.$ = window.jQuery = jquery);","var $ = require(\"jquery\");\r\n\r\nvar scroll;\r\nvar hideAt = 136;\r\n\r\n(function () {\r\n $.get(\"/images/icons/_Sprite.svg\", function (data) {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = new XMLSerializer().serializeToString(data.documentElement);\r\n document.body.insertBefore(div, document.body.childNodes[0]);\r\n });\r\n\r\n if ($(window).scrollTop() > 10) {\r\n onScroll();\r\n }\r\n\r\n $(document).on('scroll', onScroll);\r\n\r\n function onScroll() {\r\n var currentScroll = $(window).scrollTop();\r\n\r\n if (scroll && currentScroll < scroll) {\r\n $(\".Header\").css('top', 0);\r\n }\r\n else if (scroll && currentScroll > hideAt) {\r\n $(\".Header\").css('top', -$('.Header').outerHeight());\r\n }\r\n\r\n scroll = currentScroll;\r\n }\r\n})();\r\n\r\n","const $ = require(\"jquery\");\r\n\r\n(function () {\r\n const $header = $(\".Header\");\r\n const $menu = $(\"[data-navigation]\");\r\n const $menuOpen = $(\"[data-navigation-toggler]\");\r\n const $menuClose = $(\"[data-navigation-close]\");\r\n const $expandToggler = $menu.find(\"[data-expand-toggle]\");\r\n const $overlay = $(\"[data-navigation-dropdown-overlay]\");\r\n const $html = $(\"body\");\r\n\r\n $menuOpen.on('click', function (e) {\r\n e.preventDefault();\r\n $html.toggleClass(\"-preventscroll\")\r\n $menu.toggleClass(\"open\");\r\n $overlay.show(\"fast\");\r\n });\r\n\r\n $menuClose.on(\"click\", closeMenu);\r\n\r\n $expandToggler.on(\"click\", function (e) {\r\n e.preventDefault();\r\n $(this).find(\".Icon\").toggleClass(\"-open\");\r\n $(this).parent().toggleClass(\"-expanded\");\r\n $(this).parent().find(\".Nav-submenu\").toggleClass(\"-expanded\");\r\n });\r\n\r\n $overlay.on(\"click\", closeMenu);\r\n\r\n function closeMenu(e) {\r\n e.preventDefault();\r\n $overlay.hide(\"fast\");\r\n $html.toggleClass(\"-preventscroll\")\r\n $menu.toggleClass(\"open\");\r\n }\r\n\r\n //Init\r\n var prevScrollpos = window.pageYOffset;\r\n if (prevScrollpos > 0) {\r\n $header.addClass(\"-solid\");\r\n }\r\n\r\n window.onscroll = function () {\r\n const currentScrollPos = window.pageYOffset;\r\n\r\n if (currentScrollPos > 0) {\r\n $header.addClass(\"-solid\");\r\n }\r\n else {\r\n $header.removeClass(\"-solid\");\r\n }\r\n\r\n if (prevScrollpos > currentScrollPos) {\r\n $header.removeClass(\"-hide\")\r\n } else {\r\n $header.addClass(\"-hide\")\r\n }\r\n\r\n prevScrollpos = currentScrollPos;\r\n }\r\n})();","const $ = require(\"jquery\");\r\nimport 'slick-carousel';\r\n\r\n(function () {\r\n var $slickMobile = $(\"[data-js-slick-mobile]\");\r\n\r\n\r\n function slickIt($element) {\r\n $element.each(function () {\r\n $(this).not('.slick-initialized').slick({\r\n infinite: false,\r\n speed: 300,\r\n slidesToShow: 1.05,\r\n slidesToScroll: 1,\r\n dots: true,\r\n arrows: false,\r\n mobileFirst: true,\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: \"unslick\"\r\n }\r\n ]\r\n });\r\n });\r\n }\r\n\r\n slickIt($slickMobile);\r\n})();","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"