{"version":3,"file":"special-offers-a67f6c4b.min.js","sources":["../scripts/special-offers/special-offers.js","../scripts/dealsearch/value-rating-modal.js","../scripts/jquery.magnific-popup.js","../scripts/components/faq-accordion.ts"],"sourcesContent":["const updateSearchResults = (pageNumber, sort, financeType, afterUpdate) => {\n const currentPage = \"special-offers\";\n\n // fetch the updated search results\n $.get(`/${currentPage}/search-results-partial/?pageNumber=${pageNumber}&sort=${sort}&financeType=${financeType}`, function (data) {\n // Update the search results container with the HTML returned from the server\n document.getElementById(\"search-results-container\").innerHTML = data;\n\n // callback\n afterUpdate();\n\n // rebind the pagination links now they've been replaced\n bindPaginationLinkEvents();\n });\n}\n\nconst getCurrentFinanceType = () => {\n return document.querySelector(\"#personal-button\").classList.contains(\"active\") ? \"Personal\" : \"Business\";\n}\n\n// function to handle finance type changes\nconst handleFinanceTypeChange = (financeType) => {\n const selectSort = document.querySelector(\"#select-sort\");\n const sortParam = selectSort ? selectSort[selectSort.selectedIndex].value : \"\";\n const pageNumber = 1;\n\n updateSearchResults(pageNumber, sortParam, financeType, () => {\n // update the active state of the buttons\n if (financeType === \"Personal\") {\n document.getElementById(\"personal-button\").classList.add(\"active\");\n document.getElementById(\"business-button\").classList.remove(\"active\");\n } else {\n document.getElementById(\"business-button\").classList.add(\"active\");\n document.getElementById(\"personal-button\").classList.remove(\"active\");\n }\n\n // update the URL\n const urlPath = pageNumber > 1 ? `/special-offers/page${pageNumber}/?sort=${sortParam}&financeType=${financeType}` : `/special-offers/?sort=${sortParam}&financeType=${financeType}`;\n window.history.pushState({ sort: sortParam, pageNumber, financeType }, \"\", urlPath);\n });\n};\n\n// use delegated event handling for buttons\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var searchResultsContainer = document.getElementById(\"search-results-container\");\n\n if (searchResultsContainer) {\n searchResultsContainer.addEventListener(\"click\", function (event) {\n if (event.target && event.target.matches(\"#personal-button\")) {\n event.preventDefault();\n handleFinanceTypeChange(\"Personal\");\n } else if (event.target && event.target.matches(\"#business-button\")) {\n event.preventDefault();\n handleFinanceTypeChange(\"Business\");\n }\n });\n }\n});\n\n// initialize dropdown change event listener\nconst sortDropdown = document.querySelector(\"#select-sort\");\nif (sortDropdown) {\n sortDropdown.onchange = function (event) {\n const selectSort = event.currentTarget;\n const sortParam = selectSort[selectSort.selectedIndex].value;\n const pageNumber = 1;\n const financeType = getCurrentFinanceType();\n\n updateSearchResults(pageNumber, sortParam, financeType, () => {\n const urlPath = pageNumber > 1 ? `/special-offers/page${pageNumber}/?sort=${sortParam}&financeType=${financeType}` : `/special-offers/?sort=${sortParam}&financeType=${financeType}`;\n window.history.pushState({ sort: sortParam, pageNumber, financeType }, \"\", urlPath);\n });\n }\n}\n\nconst bindPaginationLinkEvents = () => {\n document.querySelectorAll(\".pagination a\").forEach((paginationLink) => {\n paginationLink.addEventListener(\"click\", (event) => {\n event.preventDefault();\n const selectSort = document.querySelector(\"#select-sort\");\n const sort = selectSort[selectSort.selectedIndex].value;\n const pageNumber = event.target.getAttribute(\"destination-page-number\");\n const financeType = getCurrentFinanceType(); // Get the current finance type\n\n updateSearchResults(pageNumber, sort, financeType, () => {\n // update the URL with current state including finance type and page number\n const urlPath = pageNumber > 1 ? `/special-offers/page${pageNumber}/?sort=${sort}&financeType=${financeType}` : `/special-offers/?sort=${sort}&financeType=${financeType}`;\n window.history.pushState({ sort, pageNumber, financeType }, \"\", urlPath);\n\n document.querySelector(\".deal-panel\").scrollIntoView();\n });\n });\n });\n};\n\nwindow.addEventListener(\"popstate\", (event) => {\n if (event.state) {\n updateSearchResults(event.state.pageNumber, event.state.sort, event.state.financeType, () => {\n const selectSort = document.querySelector(\"#select-sort\");\n if (selectSort) {\n selectSort.value = event.state.sort;\n }\n document.querySelector(\".deal-panel\").scrollIntoView();\n });\n }\n});\n\n// setup initial state\nconst selectSort = document.querySelector(\"#select-sort\");\nif (selectSort) {\n const initialSort = selectSort[selectSort.selectedIndex].value;\n window.history.replaceState({ sort: initialSort, pageNumber: 1, financeType: \"Personal\" }, \"\");\n}\n","$(function () {\n\n $(document).on('click',\n '.rating-help',\n function (event) {\n event.preventDefault();\n var valueRating = $(this).data(\"value-rating\");\n var spriteNum = $(this).data(\"value-spritenum\");\n\n $.magnificPopup.open({\n\n preloader: false,\n fixedContentPos: true,\n type: 'inline',\n mainClass: 'slide-left',\n removalDelay: 200,\n items: [\n {\n valueRating: valueRating,\n spriteNum: spriteNum\n }],\n inline: {\n markup: '
' +\n '' +\n '
Value score explained
' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
Looking for the best leasing deals? We've created the Leasing.com Value Score to help you find them.
' +\n '
9/10 people get the best deal on Leasing.com. We've developed an advanced algorithm to give every one of the offers on our site a score out of ten, ' +\n 'which you can use to compare deals and rank them. So, if you're looking for a bargain, or want to know if you're getting value for money, just check the score.
'\n }\n });\n\n });\n});","/*! Magnific Popup - v1.1.0 - 2016-02-20\n* http://dimsemenov.com/plugins/magnific-popup/\n* Copyright (c) 2016 Dmitry Semenov; */\n; (function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module. \n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS \n factory(require('jquery'));\n } else {\n // Browser globals \n factory(window.jQuery || window.Zepto);\n }\n}(function ($) {\n\n /*>>core*/\n /**\n * \n * Magnific Popup Core JS file\n * \n */\n\n\n /**\n * Private static constants\n */\n var CLOSE_EVENT = 'Close',\n BEFORE_CLOSE_EVENT = 'BeforeClose',\n AFTER_CLOSE_EVENT = 'AfterClose',\n BEFORE_APPEND_EVENT = 'BeforeAppend',\n MARKUP_PARSE_EVENT = 'MarkupParse',\n OPEN_EVENT = 'Open',\n CHANGE_EVENT = 'Change',\n NS = 'mfp',\n EVENT_NS = '.' + NS,\n READY_CLASS = 'mfp-ready',\n REMOVING_CLASS = 'mfp-removing',\n PREVENT_CLOSE_CLASS = 'mfp-prevent-close';\n\n\n /**\n * Private vars \n */\n /*jshint -W079 */\n var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'\n MagnificPopup = function () { },\n _isJQ = !!(window.jQuery),\n _prevStatus,\n _window = $(window),\n _document,\n _prevContentType,\n _wrapClasses,\n _currPopupType;\n\n\n /*\n * Private functions\n */\n var _mfpOn = function (name, f) {\n mfp.ev.on(NS + name + EVENT_NS, f);\n },\n _getEl = function (className, appendTo, html, raw) {\n var el = document.createElement('div');\n el.className = 'mfp-' + className;\n if (html) {\n el.innerHTML = html;\n }\n if (!raw) {\n el = $(el);\n if (appendTo) {\n el.appendTo(appendTo);\n }\n } else if (appendTo) {\n appendTo.appendChild(el);\n }\n return el;\n },\n _mfpTrigger = function (e, data) {\n mfp.ev.triggerHandler(NS + e, data);\n\n if (mfp.st.callbacks) {\n // converts \"mfpEventName\" to \"eventName\" callback and triggers it if it's present\n e = e.charAt(0).toLowerCase() + e.slice(1);\n if (mfp.st.callbacks[e]) {\n mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);\n }\n }\n },\n _getCloseBtn = function (type) {\n if (type !== _currPopupType || !mfp.currTemplate.closeBtn) {\n mfp.currTemplate.closeBtn = $(mfp.st.closeMarkup.replace('%title%', mfp.st.tClose));\n _currPopupType = type;\n }\n return mfp.currTemplate.closeBtn;\n },\n // Initialize Magnific Popup only when called at least once\n _checkInstance = function () {\n if (!$.magnificPopup.instance) {\n /*jshint -W020 */\n mfp = new MagnificPopup();\n mfp.init();\n $.magnificPopup.instance = mfp;\n }\n },\n // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n supportsTransitions = function () {\n var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist\n v = ['ms', 'O', 'Moz', 'Webkit']; // 'v' for vendor\n\n if (s['transition'] !== undefined) {\n return true;\n }\n\n while (v.length) {\n if (v.pop() + 'Transition' in s) {\n return true;\n }\n }\n\n return false;\n };\n\n\n\n /**\n * Public functions\n */\n MagnificPopup.prototype = {\n\n constructor: MagnificPopup,\n\n /**\n * Initializes Magnific Popup plugin. \n * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed\n */\n init: function () {\n var appVersion = navigator.appVersion;\n mfp.isAndroid = (/android/gi).test(appVersion);\n mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);\n mfp.supportsTransition = supportsTransitions();\n\n // We disable fixed positioned lightbox on devices that don't handle it nicely.\n // If you know a better way of detecting this - let me know.\n mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent));\n _document = $(document);\n\n mfp.popupsCache = {};\n },\n\n /*\n * Opens popup\n * @param data [description]\n */\n open: function (data) {\n\n var i;\n\n if (data.isObj === false) {\n // convert jQuery collection to array to avoid conflicts later\n mfp.items = data.items.toArray();\n\n mfp.index = 0;\n var items = data.items,\n item;\n for (i = 0; i < items.length; i++) {\n item = items[i];\n if (item.parsed) {\n item = item.el[0];\n }\n if (item === data.el[0]) {\n mfp.index = i;\n break;\n }\n }\n } else {\n mfp.items = $.isArray(data.items) ? data.items : [data.items];\n mfp.index = data.index || 0;\n }\n\n // if popup is already opened - we just update the content\n if (mfp.isOpen) {\n mfp.updateItemHTML();\n return;\n }\n\n mfp.types = [];\n _wrapClasses = '';\n if (data.mainEl && data.mainEl.length) {\n mfp.ev = data.mainEl.eq(0);\n } else {\n mfp.ev = _document;\n }\n\n if (data.key) {\n if (!mfp.popupsCache[data.key]) {\n mfp.popupsCache[data.key] = {};\n }\n mfp.currTemplate = mfp.popupsCache[data.key];\n } else {\n mfp.currTemplate = {};\n }\n\n\n\n mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data);\n mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;\n\n if (mfp.st.modal) {\n mfp.st.closeOnContentClick = false;\n mfp.st.closeOnBgClick = false;\n mfp.st.showCloseBtn = false;\n mfp.st.enableEscapeKey = false;\n }\n\n\n // Building markup\n // main containers are created only once\n if (!mfp.bgOverlay) {\n\n // Dark overlay\n mfp.bgOverlay = _getEl('bg').on('click' + EVENT_NS, function () {\n mfp.close();\n });\n\n mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click' + EVENT_NS, function (e) {\n if (mfp._checkIfClose(e.target)) {\n mfp.close();\n }\n });\n\n mfp.container = _getEl('container', mfp.wrap);\n }\n\n mfp.contentContainer = _getEl('content');\n if (mfp.st.preloader) {\n mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);\n }\n\n\n // Initializing modules\n var modules = $.magnificPopup.modules;\n for (i = 0; i < modules.length; i++) {\n var n = modules[i];\n n = n.charAt(0).toUpperCase() + n.slice(1);\n mfp['init' + n].call(mfp);\n }\n _mfpTrigger('BeforeOpen');\n\n\n if (mfp.st.showCloseBtn) {\n // Close button\n if (!mfp.st.closeBtnInside) {\n mfp.wrap.append(_getCloseBtn());\n } else {\n _mfpOn(MARKUP_PARSE_EVENT, function (e, template, values, item) {\n values.close_replaceWith = _getCloseBtn(item.type);\n });\n _wrapClasses += ' mfp-close-btn-in';\n }\n }\n\n if (mfp.st.alignTop) {\n _wrapClasses += ' mfp-align-top';\n }\n\n\n\n if (mfp.fixedContentPos) {\n mfp.wrap.css({\n overflow: mfp.st.overflowY,\n overflowX: 'hidden',\n overflowY: mfp.st.overflowY\n });\n } else {\n mfp.wrap.css({\n top: _window.scrollTop(),\n position: 'absolute'\n });\n }\n if (mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos)) {\n mfp.bgOverlay.css({\n height: _document.height(),\n position: 'absolute'\n });\n }\n\n\n\n if (mfp.st.enableEscapeKey) {\n // Close on ESC key\n _document.on('keyup' + EVENT_NS, function (e) {\n if (e.keyCode === 27) {\n mfp.close();\n }\n });\n }\n\n _window.on('resize' + EVENT_NS, function () {\n mfp.updateSize();\n });\n\n\n if (!mfp.st.closeOnContentClick) {\n _wrapClasses += ' mfp-auto-cursor';\n }\n\n if (_wrapClasses)\n mfp.wrap.addClass(_wrapClasses);\n\n\n // this triggers recalculation of layout, so we get it once to not to trigger twice\n var windowHeight = mfp.wH = _window.height();\n\n\n var windowStyles = {};\n\n if (mfp.fixedContentPos) {\n if (mfp._hasScrollBar(windowHeight)) {\n var s = mfp._getScrollbarSize();\n if (s) {\n windowStyles.marginRight = s;\n }\n }\n }\n\n if (mfp.fixedContentPos) {\n windowStyles.overflow = 'hidden';\n }\n\n var classesToadd = mfp.st.mainClass;\n\n if (classesToadd) {\n mfp._addClassToMFP(classesToadd);\n }\n\n // add content\n mfp.updateItemHTML();\n\n _mfpTrigger('BuildControls');\n\n // remove scrollbar, add margin e.t.c\n $('html').css(windowStyles);\n\n // add everything to DOM\n mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo || $(document.body));\n\n // Save last focused element\n mfp._lastFocusedEl = document.activeElement;\n\n // Wait for next cycle to allow CSS transition\n setTimeout(function () {\n\n if (mfp.content) {\n mfp._addClassToMFP(READY_CLASS);\n mfp._setFocus();\n } else {\n // if content is not defined (not loaded e.t.c) we add class only for BG\n mfp.bgOverlay.addClass(READY_CLASS);\n }\n\n // Trap the focus in popup\n _document.on('focusin' + EVENT_NS, mfp._onFocusIn);\n\n }, 16);\n\n mfp.isOpen = true;\n mfp.updateSize(windowHeight);\n _mfpTrigger(OPEN_EVENT);\n\n return data;\n },\n\n /**\n * Closes the popup\n */\n close: function () {\n if (!mfp.isOpen) return;\n _mfpTrigger(BEFORE_CLOSE_EVENT);\n\n mfp.isOpen = false;\n // for CSS3 animation\n if (mfp.st.removalDelay && mfp.supportsTransition) {\n mfp._addClassToMFP(REMOVING_CLASS);\n setTimeout(function () {\n mfp._close();\n }, mfp.st.removalDelay);\n } else {\n mfp._close();\n }\n },\n\n /**\n * Helper for close() function\n */\n _close: function () {\n _mfpTrigger(CLOSE_EVENT);\n\n var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';\n\n mfp.bgOverlay.detach();\n mfp.wrap.detach();\n mfp.container.empty();\n\n if (mfp.st.mainClass) {\n classesToRemove += mfp.st.mainClass + ' ';\n }\n\n mfp._removeClassFromMFP(classesToRemove);\n\n if (mfp.fixedContentPos) {\n var windowStyles = { marginRight: '' };\n windowStyles.overflow = '';\n $('html').css(windowStyles);\n }\n\n _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);\n mfp.ev.off(EVENT_NS);\n\n // clean up DOM elements that aren't removed\n mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');\n mfp.bgOverlay.attr('class', 'mfp-bg');\n mfp.container.attr('class', 'mfp-container');\n\n // remove close button from target element\n if (mfp.st.showCloseBtn &&\n (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {\n if (mfp.currTemplate.closeBtn)\n mfp.currTemplate.closeBtn.detach();\n }\n\n\n if (mfp.st.autoFocusLast && mfp._lastFocusedEl) {\n $(mfp._lastFocusedEl).focus(); // put tab focus back\n }\n mfp.currItem = null;\n mfp.content = null;\n mfp.currTemplate = null;\n mfp.prevHeight = 0;\n\n _mfpTrigger(AFTER_CLOSE_EVENT);\n },\n\n updateSize: function (winHeight) {\n\n if (mfp.isIOS) {\n // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2\n var zoomLevel = document.documentElement.clientWidth / window.innerWidth;\n var height = window.innerHeight * zoomLevel;\n mfp.wrap.css('height', height);\n mfp.wH = height;\n } else {\n mfp.wH = winHeight || _window.height();\n }\n // Fixes #84: popup incorrectly positioned with position:relative on body\n if (!mfp.fixedContentPos) {\n mfp.wrap.css('height', mfp.wH);\n }\n\n _mfpTrigger('Resize');\n\n },\n\n /**\n * Set content of popup based on current index\n */\n updateItemHTML: function () {\n var item = mfp.items[mfp.index];\n\n // Detach and perform modifications\n mfp.contentContainer.detach();\n\n if (mfp.content)\n mfp.content.detach();\n\n if (!item.parsed) {\n item = mfp.parseEl(mfp.index);\n }\n\n var type = item.type;\n\n _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);\n // BeforeChange event works like so:\n // _mfpOn('BeforeChange', function(e, prevType, newType) { });\n\n mfp.currItem = item;\n\n if (!mfp.currTemplate[type]) {\n var markup = mfp.st[type] ? mfp.st[type].markup : false;\n\n // allows to modify markup\n _mfpTrigger('FirstMarkupParse', markup);\n\n if (markup) {\n mfp.currTemplate[type] = $(markup);\n } else {\n // if there is no markup found we just define that template is parsed\n mfp.currTemplate[type] = true;\n }\n }\n\n if (_prevContentType && _prevContentType !== item.type) {\n mfp.container.removeClass('mfp-' + _prevContentType + '-holder');\n }\n\n var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);\n mfp.appendContent(newContent, type);\n\n item.preloaded = true;\n\n _mfpTrigger(CHANGE_EVENT, item);\n _prevContentType = item.type;\n\n // Append container back after its content changed\n mfp.container.prepend(mfp.contentContainer);\n\n _mfpTrigger('AfterChange');\n },\n\n\n /*\n * Set HTML content of popup\n */\n appendContent: function (newContent, type) {\n mfp.content = newContent;\n\n if (newContent) {\n if (mfp.st.showCloseBtn && mfp.st.closeBtnInside &&\n mfp.currTemplate[type] === true) {\n // if there is no markup, we just append close button element inside\n if (!mfp.content.find('.mfp-close').length) {\n mfp.content.append(_getCloseBtn());\n }\n } else {\n mfp.content = newContent;\n }\n } else {\n mfp.content = '';\n }\n\n _mfpTrigger(BEFORE_APPEND_EVENT);\n mfp.container.addClass('mfp-' + type + '-holder');\n\n mfp.contentContainer.append(mfp.content);\n },\n\n\n /*\n * Creates Magnific Popup data object based on given data\n * @param {int} index Index of item to parse\n */\n parseEl: function (index) {\n var item = mfp.items[index],\n type;\n\n if (item.tagName) {\n item = { el: $(item) };\n } else {\n type = item.type;\n item = { data: item, src: item.src };\n }\n\n if (item.el) {\n var types = mfp.types;\n\n // check for 'mfp-TYPE' class\n for (var i = 0; i < types.length; i++) {\n if (item.el.hasClass('mfp-' + types[i])) {\n type = types[i];\n break;\n }\n }\n\n item.src = item.el.attr('data-mfp-src');\n if (!item.src) {\n item.src = item.el.attr('href');\n }\n }\n\n item.type = type || mfp.st.type || 'inline';\n item.index = index;\n item.parsed = true;\n mfp.items[index] = item;\n _mfpTrigger('ElementParse', item);\n\n return mfp.items[index];\n },\n\n\n /*\n * Initializes single popup or a group of popups\n */\n addGroup: function (el, options) {\n var eHandler = function (e) {\n e.mfpEl = this;\n mfp._openClick(e, el, options);\n };\n\n if (!options) {\n options = {};\n }\n\n var eName = 'click.magnificPopup';\n options.mainEl = el;\n\n if (options.items) {\n options.isObj = true;\n el.off(eName).on(eName, eHandler);\n } else {\n options.isObj = false;\n if (options.delegate) {\n el.off(eName).on(eName, options.delegate, eHandler);\n } else {\n options.items = el;\n el.off(eName).on(eName, eHandler);\n }\n }\n },\n _openClick: function (e, el, options) {\n var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;\n\n\n if (!midClick && (e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) {\n return;\n }\n\n var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;\n\n if (disableOn) {\n if ($.isFunction(disableOn)) {\n if (!disableOn.call(mfp)) {\n return true;\n }\n } else { // else it's number\n if (_window.width() < disableOn) {\n return true;\n }\n }\n }\n\n if (e.type) {\n e.preventDefault();\n\n // This will prevent popup from closing if element is inside and popup is already opened\n if (mfp.isOpen) {\n e.stopPropagation();\n }\n }\n\n options.el = $(e.mfpEl);\n if (options.delegate) {\n options.items = el.find(options.delegate);\n }\n mfp.open(options);\n },\n\n\n /*\n * Updates text on preloader\n */\n updateStatus: function (status, text) {\n\n if (mfp.preloader) {\n if (_prevStatus !== status) {\n mfp.container.removeClass('mfp-s-' + _prevStatus);\n }\n\n if (!text && status === 'loading') {\n text = mfp.st.tLoading;\n }\n\n var data = {\n status: status,\n text: text\n };\n // allows to modify status\n _mfpTrigger('UpdateStatus', data);\n\n status = data.status;\n text = data.text;\n\n mfp.preloader.html(text);\n\n mfp.preloader.find('a').on('click', function (e) {\n e.stopImmediatePropagation();\n });\n\n mfp.container.addClass('mfp-s-' + status);\n _prevStatus = status;\n }\n },\n\n\n /*\n \"Private\" helpers that aren't private at all\n */\n // Check to close popup or not\n // \"target\" is an element that was clicked\n _checkIfClose: function (target) {\n\n if ($(target).hasClass(PREVENT_CLOSE_CLASS)) {\n return;\n }\n\n var closeOnContent = mfp.st.closeOnContentClick;\n var closeOnBg = mfp.st.closeOnBgClick;\n\n if (closeOnContent && closeOnBg) {\n return true;\n } else {\n\n // We close the popup if click is on close button or on preloader. Or if there is no content.\n if (!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0])) {\n return true;\n }\n\n // if click is outside the content\n if ((target !== mfp.content[0] && !$.contains(mfp.content[0], target))) {\n if (closeOnBg) {\n // last check, if the clicked element is in DOM, (in case it's removed onclick)\n if ($.contains(document, target)) {\n return true;\n }\n }\n } else if (closeOnContent) {\n return true;\n }\n\n }\n return false;\n },\n _addClassToMFP: function (cName) {\n mfp.bgOverlay.addClass(cName);\n mfp.wrap.addClass(cName);\n },\n _removeClassFromMFP: function (cName) {\n this.bgOverlay.removeClass(cName);\n mfp.wrap.removeClass(cName);\n },\n _hasScrollBar: function (winHeight) {\n return ((document.body.scrollHeight) > (winHeight || _window.height()));\n },\n _setFocus: function () {\n (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();\n },\n _onFocusIn: function (e) {\n if (e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target)) {\n mfp._setFocus();\n return false;\n }\n },\n _parseMarkup: function (template, values, item) {\n var arr;\n if (item.data) {\n values = $.extend(item.data, values);\n }\n _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]);\n\n $.each(values, function (key, value) {\n if (value === undefined || value === false) {\n return true;\n }\n arr = key.split('_');\n if (arr.length > 1) {\n var el = template.find(EVENT_NS + '-' + arr[0]);\n\n if (el.length > 0) {\n var attr = arr[1];\n if (attr === 'replaceWith') {\n if (el[0] !== value[0]) {\n el.replaceWith(value);\n }\n } else if (attr === 'img') {\n if (el.is('img')) {\n el.attr('src', value);\n } else {\n el.replaceWith($('').attr('src', value).attr('class', el.attr('class')));\n }\n } else {\n el.attr(arr[1], value);\n }\n }\n\n } else {\n template.find(EVENT_NS + '-' + key).html(value);\n }\n });\n },\n\n _getScrollbarSize: function () {\n // thx David\n if (mfp.scrollbarSize === undefined) {\n var scrollDiv = document.createElement(\"div\");\n scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n document.body.appendChild(scrollDiv);\n mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n return mfp.scrollbarSize;\n }\n\n }; /* MagnificPopup core prototype end */\n\n\n\n\n /**\n * Public static functions\n */\n $.magnificPopup = {\n instance: null,\n proto: MagnificPopup.prototype,\n modules: [],\n\n open: function (options, index) {\n _checkInstance();\n\n if (!options) {\n options = {};\n } else {\n options = $.extend(true, {}, options);\n }\n\n options.isObj = true;\n options.index = index || 0;\n return this.instance.open(options);\n },\n\n close: function () {\n return $.magnificPopup.instance && $.magnificPopup.instance.close();\n },\n\n registerModule: function (name, module) {\n if (module.options) {\n $.magnificPopup.defaults[name] = module.options;\n }\n $.extend(this.proto, module.proto);\n this.modules.push(name);\n },\n\n defaults: {\n\n // Info about options is in docs:\n // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options\n\n disableOn: 0,\n\n key: null,\n\n midClick: false,\n\n mainClass: '',\n\n preloader: true,\n\n focus: '', // CSS selector of input to focus after popup is opened\n\n closeOnContentClick: false,\n\n closeOnBgClick: true,\n\n closeBtnInside: true,\n\n showCloseBtn: true,\n\n enableEscapeKey: true,\n\n modal: false,\n\n alignTop: false,\n\n removalDelay: 0,\n\n prependTo: null,\n\n fixedContentPos: 'auto',\n\n fixedBgPos: 'auto',\n\n overflowY: 'auto',\n\n closeMarkup: '',\n\n tClose: 'Close (Esc)',\n\n tLoading: 'Loading...',\n\n autoFocusLast: true\n\n }\n };\n\n\n\n $.fn.magnificPopup = function (options) {\n _checkInstance();\n\n var jqEl = $(this);\n\n // We call some API method of first param is a string\n if (typeof options === \"string\") {\n\n if (options === 'open') {\n var items,\n itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\n index = parseInt(arguments[1], 10) || 0;\n\n if (itemOpts.items) {\n items = itemOpts.items[index];\n } else {\n items = jqEl;\n if (itemOpts.delegate) {\n items = items.find(itemOpts.delegate);\n }\n items = items.eq(index);\n }\n mfp._openClick({ mfpEl: items }, jqEl, itemOpts);\n } else {\n if (mfp.isOpen)\n mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\n }\n\n } else {\n // clone options obj\n options = $.extend(true, {}, options);\n\n /*\n * As Zepto doesn't support .data() method for objects\n * and it works only in normal browsers\n * we assign \"options\" object directly to the DOM element. FTW!\n */\n if (_isJQ) {\n jqEl.data('magnificPopup', options);\n } else {\n jqEl[0].magnificPopup = options;\n }\n\n mfp.addGroup(jqEl, options);\n\n }\n return jqEl;\n };\n\n /*>>core*/\n\n /*>>inline*/\n\n var INLINE_NS = 'inline',\n _hiddenClass,\n _inlinePlaceholder,\n _lastInlineElement,\n _putInlineElementsBack = function () {\n if (_lastInlineElement) {\n _inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();\n _lastInlineElement = null;\n }\n };\n\n $.magnificPopup.registerModule(INLINE_NS, {\n options: {\n hiddenClass: 'hide', // will be appended with `mfp-` prefix\n markup: '',\n tNotFound: 'Content not found'\n },\n proto: {\n\n initInline: function () {\n mfp.types.push(INLINE_NS);\n\n _mfpOn(CLOSE_EVENT + '.' + INLINE_NS, function () {\n _putInlineElementsBack();\n });\n },\n\n getInline: function (item, template) {\n\n _putInlineElementsBack();\n\n if (item.src) {\n var inlineSt = mfp.st.inline,\n el = $(item.src);\n\n if (el.length) {\n\n // If target element has parent - we replace it with placeholder and put it back after popup is closed\n var parent = el[0].parentNode;\n if (parent && parent.tagName) {\n if (!_inlinePlaceholder) {\n _hiddenClass = inlineSt.hiddenClass;\n _inlinePlaceholder = _getEl(_hiddenClass);\n _hiddenClass = 'mfp-' + _hiddenClass;\n }\n // replace target inline element with placeholder\n _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\n }\n\n mfp.updateStatus('ready');\n } else {\n mfp.updateStatus('error', inlineSt.tNotFound);\n el = $('
');\n }\n\n item.inlineElement = el;\n return el;\n }\n\n mfp.updateStatus('ready');\n mfp._parseMarkup(template, {}, item);\n return template;\n }\n }\n });\n\n /*>>inline*/\n\n /*>>ajax*/\n var AJAX_NS = 'ajax',\n _ajaxCur,\n _removeAjaxCursor = function () {\n if (_ajaxCur) {\n $(document.body).removeClass(_ajaxCur);\n }\n },\n _destroyAjaxRequest = function () {\n _removeAjaxCursor();\n if (mfp.req) {\n mfp.req.abort();\n }\n };\n\n $.magnificPopup.registerModule(AJAX_NS, {\n\n options: {\n settings: null,\n cursor: 'mfp-ajax-cur',\n tError: 'The content could not be loaded.'\n },\n\n proto: {\n initAjax: function () {\n mfp.types.push(AJAX_NS);\n _ajaxCur = mfp.st.ajax.cursor;\n\n _mfpOn(CLOSE_EVENT + '.' + AJAX_NS, _destroyAjaxRequest);\n _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);\n },\n getAjax: function (item) {\n\n if (_ajaxCur) {\n $(document.body).addClass(_ajaxCur);\n }\n\n mfp.updateStatus('loading');\n\n var opts = $.extend({\n url: item.src,\n success: function (data, textStatus, jqXHR) {\n var temp = {\n data: data,\n xhr: jqXHR\n };\n\n _mfpTrigger('ParseAjax', temp);\n\n mfp.appendContent($(temp.data), AJAX_NS);\n\n item.finished = true;\n\n _removeAjaxCursor();\n\n mfp._setFocus();\n\n setTimeout(function () {\n mfp.wrap.addClass(READY_CLASS);\n }, 16);\n\n mfp.updateStatus('ready');\n\n _mfpTrigger('AjaxContentAdded');\n },\n error: function () {\n _removeAjaxCursor();\n item.finished = item.loadError = true;\n mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));\n }\n }, mfp.st.ajax.settings);\n\n mfp.req = $.ajax(opts);\n\n return '';\n }\n }\n });\n\n /*>>ajax*/\n\n /*>>image*/\n var _imgInterval,\n _getTitle = function (item) {\n if (item.data && item.data.title !== undefined)\n return item.data.title;\n\n var src = mfp.st.image.titleSrc;\n\n if (src) {\n if ($.isFunction(src)) {\n return src.call(mfp, item);\n } else if (item.el) {\n return item.el.attr(src) || '';\n }\n }\n return '';\n };\n\n $.magnificPopup.registerModule('image', {\n\n options: {\n markup: '
' +\n '' +\n '' +\n '' +\n '' +\n '
' +\n '' +\n '' +\n '
' +\n '' +\n '' +\n '
',\n cursor: 'mfp-zoom-out-cur',\n titleSrc: 'title',\n verticalFit: true,\n tError: 'The image could not be loaded.'\n },\n\n proto: {\n initImage: function () {\n var imgSt = mfp.st.image,\n ns = '.image';\n\n mfp.types.push('image');\n\n _mfpOn(OPEN_EVENT + ns, function () {\n if (mfp.currItem.type === 'image' && imgSt.cursor) {\n $(document.body).addClass(imgSt.cursor);\n }\n });\n\n _mfpOn(CLOSE_EVENT + ns, function () {\n if (imgSt.cursor) {\n $(document.body).removeClass(imgSt.cursor);\n }\n _window.off('resize' + EVENT_NS);\n });\n\n _mfpOn('Resize' + ns, mfp.resizeImage);\n },\n resizeImage: function () {\n var item = mfp.currItem;\n if (!item || !item.img) return;\n\n if (mfp.st.image.verticalFit) {\n var decr = 0;\n item.img.css('max-height', mfp.wH - decr);\n }\n },\n _onImageHasSize: function (item) {\n if (item.img) {\n\n item.hasSize = true;\n\n if (_imgInterval) {\n clearInterval(_imgInterval);\n }\n\n item.isCheckingImgSize = false;\n\n _mfpTrigger('ImageHasSize', item);\n\n if (item.imgHidden) {\n if (mfp.content)\n mfp.content.removeClass('mfp-loading');\n\n item.imgHidden = false;\n }\n\n }\n },\n\n /*\n * Function that loops until the image has size to display elements that rely on it asap\n */\n findImageSize: function (item) {\n\n var counter = 0,\n img = item.img[0],\n mfpSetInterval = function (delay) {\n\n if (_imgInterval) {\n clearInterval(_imgInterval);\n }\n // decelerating interval that checks for size of an image\n _imgInterval = setInterval(function () {\n if (img.naturalWidth > 0) {\n mfp._onImageHasSize(item);\n return;\n }\n\n if (counter > 200) {\n clearInterval(_imgInterval);\n }\n\n counter++;\n if (counter === 3) {\n mfpSetInterval(10);\n } else if (counter === 40) {\n mfpSetInterval(50);\n } else if (counter === 100) {\n mfpSetInterval(500);\n }\n }, delay);\n };\n\n mfpSetInterval(1);\n },\n\n getImage: function (item, template) {\n\n var guard = 0,\n\n // image load complete handler\n onLoadComplete = function () {\n if (item) {\n if (item.img[0].complete) {\n item.img.off('.mfploader');\n\n if (item === mfp.currItem) {\n mfp._onImageHasSize(item);\n\n mfp.updateStatus('ready');\n }\n\n item.hasSize = true;\n item.loaded = true;\n\n _mfpTrigger('ImageLoadComplete');\n\n }\n else {\n // if image complete check fails 200 times (20 sec), we assume that there was an error.\n guard++;\n if (guard < 200) {\n setTimeout(onLoadComplete, 100);\n } else {\n onLoadError();\n }\n }\n }\n },\n\n // image error handler\n onLoadError = function () {\n if (item) {\n item.img.off('.mfploader');\n if (item === mfp.currItem) {\n mfp._onImageHasSize(item);\n mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src));\n }\n\n item.hasSize = true;\n item.loaded = true;\n item.loadError = true;\n }\n },\n imgSt = mfp.st.image;\n\n\n var el = template.find('.mfp-img');\n if (el.length) {\n var img = document.createElement('img');\n img.className = 'mfp-img';\n if (item.el && item.el.find('img').length) {\n img.alt = item.el.find('img').attr('alt');\n }\n item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);\n img.src = item.src;\n\n // without clone() \"error\" event is not firing when IMG is replaced by new IMG\n // TODO: find a way to avoid such cloning\n if (el.is('img')) {\n item.img = item.img.clone();\n }\n\n img = item.img[0];\n if (img.naturalWidth > 0) {\n item.hasSize = true;\n } else if (!img.width) {\n item.hasSize = false;\n }\n }\n\n mfp._parseMarkup(template, {\n title: _getTitle(item),\n img_replaceWith: item.img\n }, item);\n\n mfp.resizeImage();\n\n if (item.hasSize) {\n if (_imgInterval) clearInterval(_imgInterval);\n\n if (item.loadError) {\n template.addClass('mfp-loading');\n mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src));\n } else {\n template.removeClass('mfp-loading');\n mfp.updateStatus('ready');\n }\n return template;\n }\n\n mfp.updateStatus('loading');\n item.loading = true;\n\n if (!item.hasSize) {\n item.imgHidden = true;\n template.addClass('mfp-loading');\n mfp.findImageSize(item);\n }\n\n return template;\n }\n }\n });\n\n /*>>image*/\n\n /*>>zoom*/\n var hasMozTransform,\n getHasMozTransform = function () {\n if (hasMozTransform === undefined) {\n hasMozTransform = document.createElement('p').style.MozTransform !== undefined;\n }\n return hasMozTransform;\n };\n\n $.magnificPopup.registerModule('zoom', {\n\n options: {\n enabled: false,\n easing: 'ease-in-out',\n duration: 300,\n opener: function (element) {\n return element.is('img') ? element : element.find('img');\n }\n },\n\n proto: {\n\n initZoom: function () {\n var zoomSt = mfp.st.zoom,\n ns = '.zoom',\n image;\n\n if (!zoomSt.enabled || !mfp.supportsTransition) {\n return;\n }\n\n var duration = zoomSt.duration,\n getElToAnimate = function (image) {\n var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),\n transition = 'all ' + (zoomSt.duration / 1000) + 's ' + zoomSt.easing,\n cssObj = {\n position: 'fixed',\n zIndex: 9999,\n left: 0,\n top: 0,\n '-webkit-backface-visibility': 'hidden'\n },\n t = 'transition';\n\n cssObj['-webkit-' + t] = cssObj['-moz-' + t] = cssObj['-o-' + t] = cssObj[t] = transition;\n\n newImg.css(cssObj);\n return newImg;\n },\n showMainContent = function () {\n mfp.content.css('visibility', 'visible');\n },\n openTimeout,\n animatedImg;\n\n _mfpOn('BuildControls' + ns, function () {\n if (mfp._allowZoom()) {\n\n clearTimeout(openTimeout);\n mfp.content.css('visibility', 'hidden');\n\n // Basically, all code below does is clones existing image, puts in on top of the current one and animated it\n\n image = mfp._getItemToZoom();\n\n if (!image) {\n showMainContent();\n return;\n }\n\n animatedImg = getElToAnimate(image);\n\n animatedImg.css(mfp._getOffset());\n\n mfp.wrap.append(animatedImg);\n\n openTimeout = setTimeout(function () {\n animatedImg.css(mfp._getOffset(true));\n openTimeout = setTimeout(function () {\n\n showMainContent();\n\n setTimeout(function () {\n animatedImg.remove();\n image = animatedImg = null;\n _mfpTrigger('ZoomAnimationEnded');\n }, 16); // avoid blink when switching images\n\n }, duration); // this timeout equals animation duration\n\n }, 16); // by adding this timeout we avoid short glitch at the beginning of animation\n\n\n // Lots of timeouts...\n }\n });\n _mfpOn(BEFORE_CLOSE_EVENT + ns, function () {\n if (mfp._allowZoom()) {\n\n clearTimeout(openTimeout);\n\n mfp.st.removalDelay = duration;\n\n if (!image) {\n image = mfp._getItemToZoom();\n if (!image) {\n return;\n }\n animatedImg = getElToAnimate(image);\n }\n\n animatedImg.css(mfp._getOffset(true));\n mfp.wrap.append(animatedImg);\n mfp.content.css('visibility', 'hidden');\n\n setTimeout(function () {\n animatedImg.css(mfp._getOffset());\n }, 16);\n }\n\n });\n\n _mfpOn(CLOSE_EVENT + ns, function () {\n if (mfp._allowZoom()) {\n showMainContent();\n if (animatedImg) {\n animatedImg.remove();\n }\n image = null;\n }\n });\n },\n\n _allowZoom: function () {\n return mfp.currItem.type === 'image';\n },\n\n _getItemToZoom: function () {\n if (mfp.currItem.hasSize) {\n return mfp.currItem.img;\n } else {\n return false;\n }\n },\n\n // Get element postion relative to viewport\n _getOffset: function (isLarge) {\n var el;\n if (isLarge) {\n el = mfp.currItem.img;\n } else {\n el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);\n }\n\n var offset = el.offset();\n var paddingTop = parseInt(el.css('padding-top'), 10);\n var paddingBottom = parseInt(el.css('padding-bottom'), 10);\n offset.top -= ($(window).scrollTop() - paddingTop);\n\n\n /*\n \n Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.\n \n */\n var obj = {\n width: el.width(),\n // fix Zepto height+padding issue\n height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop\n };\n\n // I hate to do this, but there is no another option\n if (getHasMozTransform()) {\n obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';\n } else {\n obj.left = offset.left;\n obj.top = offset.top;\n }\n return obj;\n }\n\n }\n });\n\n\n\n /*>>zoom*/\n\n /*>>iframe*/\n\n var IFRAME_NS = 'iframe',\n _emptyPage = '//about:blank',\n\n _fixIframeBugs = function (isShowing) {\n if (mfp.currTemplate[IFRAME_NS]) {\n var el = mfp.currTemplate[IFRAME_NS].find('iframe');\n if (el.length) {\n // reset src after the popup is closed to avoid \"video keeps playing after popup is closed\" bug\n if (!isShowing) {\n el[0].src = _emptyPage;\n }\n }\n }\n };\n\n $.magnificPopup.registerModule(IFRAME_NS, {\n\n options: {\n markup: '
' +\n '' +\n '' +\n '
',\n\n srcAction: 'iframe_src',\n\n // we don't care and support only one default type of URL by default\n patterns: {\n youtube: {\n index: 'youtube.com',\n id: 'v=',\n src: '//www.youtube.com/embed/%id%?autoplay=1'\n },\n vimeo: {\n index: 'vimeo.com/',\n id: '/',\n src: '//player.vimeo.com/video/%id%?autoplay=1'\n },\n gmaps: {\n index: '//maps.google.',\n src: '%id%&output=embed'\n }\n }\n },\n\n proto: {\n initIframe: function () {\n mfp.types.push(IFRAME_NS);\n\n _mfpOn('BeforeChange', function (e, prevType, newType) {\n if (prevType !== newType) {\n if (prevType === IFRAME_NS) {\n _fixIframeBugs(); // iframe if removed\n } else if (newType === IFRAME_NS) {\n _fixIframeBugs(true); // iframe is showing\n }\n }// else {\n // iframe source is switched, don't do anything\n //}\n });\n\n _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function () {\n _fixIframeBugs();\n });\n },\n\n getIframe: function (item, template) {\n var embedSrc = item.src;\n var iframeSt = mfp.st.iframe;\n\n $.each(iframeSt.patterns, function () {\n if (embedSrc.indexOf(this.index) > -1) {\n if (this.id) {\n if (typeof this.id === 'string') {\n embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id) + this.id.length, embedSrc.length);\n } else {\n embedSrc = this.id.call(this, embedSrc);\n }\n }\n embedSrc = this.src.replace('%id%', embedSrc);\n return false; // break;\n }\n });\n\n var dataObj = {};\n if (iframeSt.srcAction) {\n dataObj[iframeSt.srcAction] = embedSrc;\n }\n mfp._parseMarkup(template, dataObj, item);\n\n mfp.updateStatus('ready');\n\n return template;\n }\n }\n });\n\n\n\n /*>>iframe*/\n\n /*>>gallery*/\n /*\n * Get looped index depending on number of slides\n */\n var _getLoopedId = function (index) {\n var numSlides = mfp.items.length;\n if (index > numSlides - 1) {\n return index - numSlides;\n } else if (index < 0) {\n return numSlides + index;\n }\n return index;\n },\n _replaceCurrTotal = function (text, curr, total) {\n return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);\n };\n\n $.magnificPopup.registerModule('gallery', {\n\n options: {\n enabled: false,\n arrowMarkup: '',\n preload: [0, 2],\n navigateByImgClick: true,\n arrows: true,\n\n tPrev: 'Previous (Left arrow key)',\n tNext: 'Next (Right arrow key)',\n tCounter: '%curr% of %total%'\n },\n\n proto: {\n initGallery: function () {\n\n var gSt = mfp.st.gallery,\n ns = '.mfp-gallery';\n\n mfp.direction = true; // true - next, false - prev\n\n if (!gSt || !gSt.enabled) return false;\n\n _wrapClasses += ' mfp-gallery';\n\n _mfpOn(OPEN_EVENT + ns, function () {\n\n if (gSt.navigateByImgClick) {\n mfp.wrap.on('click' + ns, '.mfp-img', function () {\n if (mfp.items.length > 1) {\n mfp.next();\n return false;\n }\n });\n }\n\n _document.on('keydown' + ns, function (e) {\n if (e.keyCode === 37) {\n mfp.prev();\n } else if (e.keyCode === 39) {\n mfp.next();\n }\n });\n });\n\n _mfpOn('UpdateStatus' + ns, function (e, data) {\n if (data.text) {\n data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);\n }\n });\n\n _mfpOn(MARKUP_PARSE_EVENT + ns, function (e, element, values, item) {\n var l = mfp.items.length;\n values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';\n });\n\n _mfpOn('BuildControls' + ns, function () {\n if (mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {\n var markup = gSt.arrowMarkup,\n arrowLeft = mfp.arrowLeft = $(markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left')).addClass(PREVENT_CLOSE_CLASS),\n arrowRight = mfp.arrowRight = $(markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right')).addClass(PREVENT_CLOSE_CLASS);\n\n arrowLeft.click(function () {\n mfp.prev();\n });\n arrowRight.click(function () {\n mfp.next();\n });\n\n mfp.container.append(arrowLeft.add(arrowRight));\n }\n });\n\n _mfpOn(CHANGE_EVENT + ns, function () {\n if (mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);\n\n mfp._preloadTimeout = setTimeout(function () {\n mfp.preloadNearbyImages();\n mfp._preloadTimeout = null;\n }, 16);\n });\n\n\n _mfpOn(CLOSE_EVENT + ns, function () {\n _document.off(ns);\n mfp.wrap.off('click' + ns);\n mfp.arrowRight = mfp.arrowLeft = null;\n });\n\n },\n next: function () {\n mfp.direction = true;\n mfp.index = _getLoopedId(mfp.index + 1);\n mfp.updateItemHTML();\n },\n prev: function () {\n mfp.direction = false;\n mfp.index = _getLoopedId(mfp.index - 1);\n mfp.updateItemHTML();\n },\n goTo: function (newIndex) {\n mfp.direction = (newIndex >= mfp.index);\n mfp.index = newIndex;\n mfp.updateItemHTML();\n },\n preloadNearbyImages: function () {\n var p = mfp.st.gallery.preload,\n preloadBefore = Math.min(p[0], mfp.items.length),\n preloadAfter = Math.min(p[1], mfp.items.length),\n i;\n\n for (i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {\n mfp._preloadItem(mfp.index + i);\n }\n for (i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {\n mfp._preloadItem(mfp.index - i);\n }\n },\n _preloadItem: function (index) {\n index = _getLoopedId(index);\n\n if (mfp.items[index].preloaded) {\n return;\n }\n\n var item = mfp.items[index];\n if (!item.parsed) {\n item = mfp.parseEl(index);\n }\n\n _mfpTrigger('LazyLoad', item);\n\n if (item.type === 'image') {\n item.img = $('').on('load.mfploader', function () {\n item.hasSize = true;\n }).on('error.mfploader', function () {\n item.hasSize = true;\n item.loadError = true;\n _mfpTrigger('LazyLoadError', item);\n }).attr('src', item.src);\n }\n\n\n item.preloaded = true;\n }\n }\n });\n\n /*>>gallery*/\n\n /*>>retina*/\n\n var RETINA_NS = 'retina';\n\n $.magnificPopup.registerModule(RETINA_NS, {\n options: {\n replaceSrc: function (item) {\n return item.src.replace(/\\.\\w+$/, function (m) { return '@2x' + m; });\n },\n ratio: 1 // Function or number. Set to 1 to disable.\n },\n proto: {\n initRetina: function () {\n if (window.devicePixelRatio > 1) {\n\n var st = mfp.st.retina,\n ratio = st.ratio;\n\n ratio = !isNaN(ratio) ? ratio : ratio();\n\n if (ratio > 1) {\n _mfpOn('ImageHasSize' + '.' + RETINA_NS, function (e, item) {\n item.img.css({\n 'max-width': item.img[0].naturalWidth / ratio,\n 'width': '100%'\n });\n });\n _mfpOn('ElementParse' + '.' + RETINA_NS, function (e, item) {\n item.src = st.replaceSrc(item, ratio);\n });\n }\n }\n\n }\n }\n });\n\n /*>>retina*/\n _checkInstance();\n}));",null],"names":["updateSearchResults","pageNumber","sort","financeType","afterUpdate","$","get","concat","data","document","getElementById","innerHTML","bindPaginationLinkEvents","getCurrentFinanceType","querySelector","classList","contains","handleFinanceTypeChange","selectSort","sortParam","selectedIndex","value","add","remove","urlPath","window","history","pushState","addEventListener","searchResultsContainer","event","target","matches","preventDefault","sortDropdown","onchange","currentTarget","querySelectorAll","forEach","paginationLink","getAttribute","scrollIntoView","state","initialSort","replaceState","on","valueRating","this","spriteNum","magnificPopup","open","preloader","fixedContentPos","type","mainClass","removalDelay","items","inline","markup","factory","mfp","_prevStatus","_document","_prevContentType","_wrapClasses","_currPopupType","MagnificPopup","_isJQ","jQuery","_window","_mfpOn","name","f","ev","_getEl","className","appendTo","html","raw","el","createElement","appendChild","_mfpTrigger","e","triggerHandler","st","callbacks","charAt","toLowerCase","slice","apply","isArray","_getCloseBtn","currTemplate","closeBtn","closeMarkup","replace","tClose","_checkInstance","instance","init","prototype","constructor","appVersion","navigator","isAndroid","test","isIOS","supportsTransition","s","style","v","undefined","length","pop","supportsTransitions","probablyMobile","userAgent","popupsCache","i","isObj","toArray","index","item","parsed","isOpen","types","mainEl","eq","key","extend","defaults","modal","closeOnContentClick","closeOnBgClick","showCloseBtn","enableEscapeKey","bgOverlay","close","wrap","attr","_checkIfClose","container","contentContainer","tLoading","modules","n","toUpperCase","call","closeBtnInside","template","values","close_replaceWith","append","alignTop","css","overflow","overflowY","overflowX","top","scrollTop","position","fixedBgPos","height","keyCode","updateSize","addClass","windowHeight","wH","windowStyles","_hasScrollBar","_getScrollbarSize","marginRight","classesToadd","_addClassToMFP","updateItemHTML","prependTo","body","_lastFocusedEl","activeElement","setTimeout","content","_setFocus","_onFocusIn","_close","classesToRemove","REMOVING_CLASS","detach","empty","_removeClassFromMFP","off","removeAttr","currItem","autoFocusLast","focus","prevHeight","winHeight","zoomLevel","documentElement","clientWidth","innerWidth","innerHeight","parseEl","removeClass","newContent","appendContent","preloaded","prepend","find","tagName","src","hasClass","addGroup","options","eHandler","mfpEl","_openClick","eName","delegate","midClick","which","ctrlKey","metaKey","altKey","shiftKey","disableOn","isFunction","width","stopPropagation","updateStatus","status","text","stopImmediatePropagation","closeOnContent","closeOnBg","cName","scrollHeight","_parseMarkup","arr","each","split","EVENT_NS","replaceWith","is","scrollbarSize","scrollDiv","cssText","offsetWidth","removeChild","proto","registerModule","module","push","fn","jqEl","itemOpts","parseInt","arguments","Array","_hiddenClass","_inlinePlaceholder","_lastInlineElement","_putInlineElementsBack","after","hiddenClass","tNotFound","initInline","CLOSE_EVENT","getInline","inlineSt","parent","parentNode","inlineElement","_ajaxCur","_removeAjaxCursor","_destroyAjaxRequest","req","abort","settings","cursor","tError","initAjax","ajax","getAjax","opts","url","success","textStatus","jqXHR","temp","xhr","finished","error","loadError","_imgInterval","hasMozTransform","_getTitle","title","image","titleSrc","verticalFit","initImage","imgSt","ns","resizeImage","img","_onImageHasSize","hasSize","clearInterval","isCheckingImgSize","imgHidden","findImageSize","counter","mfpSetInterval","delay","setInterval","naturalWidth","getImage","guard","onLoadError","loaded","alt","onLoadComplete","complete","clone","img_replaceWith","loading","enabled","easing","duration","opener","element","initZoom","zoomSt","zoom","openTimeout","animatedImg","getElToAnimate","newImg","transition","cssObj","zIndex","left","-webkit-backface-visibility","t","showMainContent","_allowZoom","clearTimeout","_getItemToZoom","_getOffset","isLarge","offset","paddingTop","paddingBottom","obj","offsetHeight","MozTransform","_fixIframeBugs","isShowing","srcAction","patterns","youtube","id","vimeo","gmaps","initIframe","prevType","newType","getIframe","embedSrc","iframeSt","iframe","indexOf","substr","lastIndexOf","dataObj","_getLoopedId","numSlides","_replaceCurrTotal","curr","total","arrowMarkup","preload","navigateByImgClick","arrows","tPrev","tNext","tCounter","initGallery","gSt","gallery","direction","next","prev","l","arrowLeft","arrowRight","click","_preloadTimeout","preloadNearbyImages","goTo","newIndex","p","preloadBefore","Math","min","preloadAfter","_preloadItem","replaceSrc","m","ratio","initRetina","devicePixelRatio","retina","isNaN","max-width","define","amd","exports","_typeof","require","Zepto","questions","getElementsByClassName","toggle","panel","nextElementSibling","maxHeight"],"mappings":"AAAA,IAAMA,EAAsB,SAACC,EAAYC,EAAMC,EAAaC,GAIxDC,EAAEC,IAAGC,IAAAA,OAHe,iBAGC,wCAAAA,OAAuCN,YAAUM,OAASL,EAAIK,iBAAAA,OAAgBJ,IAAe,SAAUK,GAExHC,SAASC,eAAe,4BAA4BC,UAAYH,EAGhEJ,IAGAQ,QAIFC,EAAwB,WAC1B,OAAOJ,SAASK,cAAc,oBAAoBC,UAAUC,SAAS,UAAY,WAAa,YAI5FC,EAA0B,SAACd,GAC7B,IAAMe,EAAaT,SAASK,cAAc,gBACpCK,EAAYD,EAAaA,EAAWA,EAAWE,eAAeC,MAAQ,GAG5ErB,EAFmB,EAEamB,EAAWhB,GAAa,WAEhC,aAAhBA,GACAM,SAASC,eAAe,mBAAmBK,UAAUO,IAAI,UACzDb,SAASC,eAAe,mBAAmBK,UAAUQ,OAAO,YAE5Dd,SAASC,eAAe,mBAAmBK,UAAUO,IAAI,UACzDb,SAASC,eAAe,mBAAmBK,UAAUQ,OAAO,WAIhE,IAAMC,EAA0GjB,yBAAAA,OAA8BY,EAASZ,iBAAAA,OAAgBJ,GACvKsB,OAAOC,QAAQC,UAAU,CAAEzB,KAAMiB,EAAWlB,WAd7B,EAcyCE,YAAAA,GAAe,GAAIqB,OAKnFf,SAASmB,iBAAiB,oBAAoB,WAC1C,IAAIC,EAAyBpB,SAASC,eAAe,4BAEjDmB,GACAA,EAAuBD,iBAAiB,SAAS,SAAUE,GACnDA,EAAMC,QAAUD,EAAMC,OAAOC,QAAQ,qBACrCF,EAAMG,iBACNhB,EAAwB,aACjBa,EAAMC,QAAUD,EAAMC,OAAOC,QAAQ,sBAC5CF,EAAMG,iBACNhB,EAAwB,mBAOxC,IAAMiB,EAAezB,SAASK,cAAc,gBACxCoB,IACAA,EAAaC,SAAW,SAAUL,GAC9B,IAAMZ,EAAaY,EAAMM,cACnBjB,EAAYD,EAAWA,EAAWE,eAAeC,MAEjDlB,EAAcU,IAEpBb,EAHmB,EAGamB,EAAWhB,GAAa,WACpD,IAAMqB,EAA0GjB,yBAAAA,OAA8BY,EAASZ,iBAAAA,OAAgBJ,GACvKsB,OAAOC,QAAQC,UAAU,CAAEzB,KAAMiB,EAAWlB,WAL7B,EAKyCE,YAAAA,GAAe,GAAIqB,QAKvF,IAAMZ,EAA2B,WAC7BH,SAAS4B,iBAAiB,iBAAiBC,SAAQ,SAACC,GAChDA,EAAeX,iBAAiB,SAAS,SAACE,GACtCA,EAAMG,iBACN,IAAMf,EAAaT,SAASK,cAAc,gBACpCZ,EAAOgB,EAAWA,EAAWE,eAAeC,MAC5CpB,EAAa6B,EAAMC,OAAOS,aAAa,2BACvCrC,EAAcU,IAEpBb,EAAoBC,EAAYC,EAAMC,GAAa,WAE/C,IAAMqB,EAAUvB,EAAa,yBAACM,OAA0BN,EAAU,WAAAM,OAAUL,EAAIK,iBAAAA,OAAgBJ,GAAWI,yBAAAA,OAA8BL,EAAIK,iBAAAA,OAAgBJ,GAC7JsB,OAAOC,QAAQC,UAAU,CAAEzB,KAAAA,EAAMD,WAAAA,EAAYE,YAAAA,GAAe,GAAIqB,GAEhEf,SAASK,cAAc,eAAe2B,2BAMtDhB,OAAOG,iBAAiB,YAAY,SAACE,GAC7BA,EAAMY,OACN1C,EAAoB8B,EAAMY,MAAMzC,WAAY6B,EAAMY,MAAMxC,KAAM4B,EAAMY,MAAMvC,aAAa,WACnF,IAAMe,EAAaT,SAASK,cAAc,gBACtCI,IACAA,EAAWG,MAAQS,EAAMY,MAAMxC,MAEnCO,SAASK,cAAc,eAAe2B,uBAMlD,IAAMvB,EAAaT,SAASK,cAAc,gBAC1C,GAAII,EAAY,CACZ,IAAMyB,EAAczB,EAAWA,EAAWE,eAAeC,MACzDI,OAAOC,QAAQkB,aAAa,CAAE1C,KAAMyC,EAAa1C,WAAY,EAAGE,YAAa,YAAc,k6BC/G9FE,GAAE,WAECA,EAAEI,UAAUoC,GAAG,QACX,gBACA,SAAUf,GACNA,EAAMG,iBACN,IAAIa,EAAczC,EAAE0C,MAAMvC,KAAK,gBAC3BwC,EAAY3C,EAAE0C,MAAMvC,KAAK,mBAE7BH,EAAE4C,cAAcC,KAAK,CAEjBC,WAAW,EACXC,iBAAiB,EACjBC,KAAM,SACNC,UAAW,aACXC,aAAc,IACdC,MAAO,CACH,CACIV,YAAaA,EACbE,UAAWA,IAEnBS,OAAQ,CACJC,OAAQ,6NAGsEV,EAHtE,s3BCnBfW,EAAAA,EAWX,SAAUtD,GAaR,IAkBIuD,EAGAC,EAEAC,EACAC,EACAC,EACAC,EAPAC,EAAgB,aAChBC,IAAW1C,OAAO2C,OAElBC,EAAUhE,EAAEoB,QAUZ6C,EAAS,SAAUC,EAAMC,GACzBZ,EAAIa,GAAG5B,GA1BF,MA0BU0B,EAzBJ,OAyBqBC,IAEhCE,EAAS,SAAUC,EAAWC,EAAUC,EAAMC,GAC1C,IAAIC,EAAKtE,SAASuE,cAAc,OAahC,OAZAD,EAAGJ,UAAY,OAASA,EACpBE,IACAE,EAAGpE,UAAYkE,GAEdC,EAKMF,GACPA,EAASK,YAAYF,IALrBA,EAAK1E,EAAE0E,GACHH,GACAG,EAAGH,SAASA,IAKbG,GAEXG,EAAc,SAAUC,EAAG3E,GACvBoD,EAAIa,GAAGW,eA7CN,MA6C0BD,EAAG3E,GAE1BoD,EAAIyB,GAAGC,YAEPH,EAAIA,EAAEI,OAAO,GAAGC,cAAgBL,EAAEM,MAAM,GACpC7B,EAAIyB,GAAGC,UAAUH,IACjBvB,EAAIyB,GAAGC,UAAUH,GAAGO,MAAM9B,EAAKvD,EAAEsF,QAAQnF,GAAQA,EAAO,CAACA,MAIrEoF,EAAe,SAAUvC,GAKrB,OAJIA,IAASY,GAAmBL,EAAIiC,aAAaC,WAC7ClC,EAAIiC,aAAaC,SAAWzF,EAAEuD,EAAIyB,GAAGU,YAAYC,QAAQ,UAAWpC,EAAIyB,GAAGY,SAC3EhC,EAAiBZ,GAEdO,EAAIiC,aAAaC,UAG5BI,EAAiB,WACR7F,EAAE4C,cAAckD,YAEjBvC,EAAM,IAAIM,GACNkC,OACJ/F,EAAE4C,cAAckD,SAAWvC,IA0BvCM,EAAcmC,UAAY,CAEtBC,YAAapC,EAMbkC,KAAM,WACF,IAAIG,EAAaC,UAAUD,WAC3B3C,EAAI6C,UAAa,YAAaC,KAAKH,GACnC3C,EAAI+C,MAAS,qBAAsBD,KAAKH,GACxC3C,EAAIgD,mBAlCc,WAClB,IAAIC,EAAIpG,SAASuE,cAAc,KAAK8B,MAChCC,EAAI,CAAC,KAAM,IAAK,MAAO,UAE3B,QAAwBC,IAApBH,EAAc,WACd,OAAO,EAGX,KAAOE,EAAEE,QACL,GAAIF,EAAEG,MAAQ,eAAgBL,EAC1B,OAAO,EAIf,OAAO,EAoBkBM,GAIzBvD,EAAIwD,eAAkBxD,EAAI6C,WAAa7C,EAAI+C,OAAS,8EAA8ED,KAAKF,UAAUa,WACjJvD,EAAYzD,EAAEI,UAEdmD,EAAI0D,YAAc,IAOtBpE,KAAM,SAAU1C,GAEZ,IAAI+G,EAEJ,IAAmB,IAAf/G,EAAKgH,MAAiB,CAEtB5D,EAAIJ,MAAQhD,EAAKgD,MAAMiE,UAEvB7D,EAAI8D,MAAQ,EACZ,IACIC,EADAnE,EAAQhD,EAAKgD,MAEjB,IAAK+D,EAAI,EAAGA,EAAI/D,EAAMyD,OAAQM,IAK1B,IAJAI,EAAOnE,EAAM+D,IACJK,SACLD,EAAOA,EAAK5C,GAAG,IAEf4C,IAASnH,EAAKuE,GAAG,GAAI,CACrBnB,EAAI8D,MAAQH,EACZ,YAIR3D,EAAIJ,MAAQnD,EAAEsF,QAAQnF,EAAKgD,OAAShD,EAAKgD,MAAQ,CAAChD,EAAKgD,OACvDI,EAAI8D,MAAQlH,EAAKkH,OAAS,EAI9B,IAAI9D,EAAIiE,OAAR,CAKAjE,EAAIkE,MAAQ,GACZ9D,EAAe,GACXxD,EAAKuH,QAAUvH,EAAKuH,OAAOd,OAC3BrD,EAAIa,GAAKjE,EAAKuH,OAAOC,GAAG,GAExBpE,EAAIa,GAAKX,EAGTtD,EAAKyH,KACArE,EAAI0D,YAAY9G,EAAKyH,OACtBrE,EAAI0D,YAAY9G,EAAKyH,KAAO,IAEhCrE,EAAIiC,aAAejC,EAAI0D,YAAY9G,EAAKyH,MAExCrE,EAAIiC,aAAe,GAKvBjC,EAAIyB,GAAKhF,EAAE6H,QAAO,EAAM,GAAI7H,EAAE4C,cAAckF,SAAU3H,GACtDoD,EAAIR,gBAA6C,SAA3BQ,EAAIyB,GAAGjC,iBAA8BQ,EAAIwD,eAAiBxD,EAAIyB,GAAGjC,gBAEnFQ,EAAIyB,GAAG+C,QACPxE,EAAIyB,GAAGgD,qBAAsB,EAC7BzE,EAAIyB,GAAGiD,gBAAiB,EACxB1E,EAAIyB,GAAGkD,cAAe,EACtB3E,EAAIyB,GAAGmD,iBAAkB,GAMxB5E,EAAI6E,YAGL7E,EAAI6E,UAAY/D,EAAO,MAAM7B,GAAG,aAAoB,WAChDe,EAAI8E,WAGR9E,EAAI+E,KAAOjE,EAAO,QAAQkE,KAAK,YAAa,GAAG/F,GAAG,aAAoB,SAAUsC,GACxEvB,EAAIiF,cAAc1D,EAAEpD,SACpB6B,EAAI8E,WAIZ9E,EAAIkF,UAAYpE,EAAO,YAAad,EAAI+E,OAG5C/E,EAAImF,iBAAmBrE,EAAO,WAC1Bd,EAAIyB,GAAGlC,YACPS,EAAIT,UAAYuB,EAAO,YAAad,EAAIkF,UAAWlF,EAAIyB,GAAG2D,WAK9D,IAAIC,EAAU5I,EAAE4C,cAAcgG,QAC9B,IAAK1B,EAAI,EAAGA,EAAI0B,EAAQhC,OAAQM,IAAK,CACjC,IAAI2B,EAAID,EAAQ1B,GAChB2B,EAAIA,EAAE3D,OAAO,GAAG4D,cAAgBD,EAAEzD,MAAM,GACxC7B,EAAI,OAASsF,GAAGE,KAAKxF,GAEzBsB,EAAY,cAGRtB,EAAIyB,GAAGkD,eAEF3E,EAAIyB,GAAGgE,gBAGR/E,EAhOS,eAgOkB,SAAUa,EAAGmE,EAAUC,EAAQ5B,GACtD4B,EAAOC,kBAAoB5D,EAAa+B,EAAKtE,SAEjDW,GAAgB,qBALhBJ,EAAI+E,KAAKc,OAAO7D,MASpBhC,EAAIyB,GAAGqE,WACP1F,GAAgB,kBAKhBJ,EAAIR,gBACJQ,EAAI+E,KAAKgB,IAAI,CACTC,SAAUhG,EAAIyB,GAAGwE,UACjBC,UAAW,SACXD,UAAWjG,EAAIyB,GAAGwE,YAGtBjG,EAAI+E,KAAKgB,IAAI,CACTI,IAAK1F,EAAQ2F,YACbC,SAAU,eAGQ,IAAtBrG,EAAIyB,GAAG6E,YAA+C,SAAtBtG,EAAIyB,GAAG6E,aAA0BtG,EAAIR,kBACrEQ,EAAI6E,UAAUkB,IAAI,CACdQ,OAAQrG,EAAUqG,SAClBF,SAAU,aAMdrG,EAAIyB,GAAGmD,iBAEP1E,EAAUjB,GAAG,aAAoB,SAAUsC,GACrB,KAAdA,EAAEiF,SACFxG,EAAI8E,WAKhBrE,EAAQxB,GAAG,cAAqB,WAC5Be,EAAIyG,gBAIHzG,EAAIyB,GAAGgD,sBACRrE,GAAgB,oBAGhBA,GACAJ,EAAI+E,KAAK2B,SAAStG,GAItB,IAAIuG,EAAe3G,EAAI4G,GAAKnG,EAAQ8F,SAGhCM,EAAe,GAEnB,GAAI7G,EAAIR,iBACAQ,EAAI8G,cAAcH,GAAe,CACjC,IAAI1D,EAAIjD,EAAI+G,oBACR9D,IACA4D,EAAaG,YAAc/D,GAKnCjD,EAAIR,kBACJqH,EAAab,SAAW,UAG5B,IAAIiB,EAAejH,EAAIyB,GAAG/B,UAwC1B,OAtCIuH,GACAjH,EAAIkH,eAAeD,GAIvBjH,EAAImH,iBAEJ7F,EAAY,iBAGZ7E,EAAE,QAAQsJ,IAAIc,GAGd7G,EAAI6E,UAAUnH,IAAIsC,EAAI+E,MAAMqC,UAAUpH,EAAIyB,GAAG2F,WAAa3K,EAAEI,SAASwK,OAGrErH,EAAIsH,eAAiBzK,SAAS0K,cAG9BC,YAAW,WAEHxH,EAAIyH,SACJzH,EAAIkH,eA9TF,aA+TFlH,EAAI0H,aAGJ1H,EAAI6E,UAAU6B,SAlUZ,aAsUNxG,EAAUjB,GAAG,cAAsBe,EAAI2H,cAExC,IAEH3H,EAAIiE,QAAS,EACbjE,EAAIyG,WAAWE,GACfrF,EAhVS,QAkVF1E,EA5LHoD,EAAImH,kBAkMZrC,MAAO,WACE9E,EAAIiE,SACT3C,EA9ViB,eAgWjBtB,EAAIiE,QAAS,EAETjE,EAAIyB,GAAG9B,cAAgBK,EAAIgD,oBAC3BhD,EAAIkH,eA1VK,gBA2VTM,YAAW,WACPxH,EAAI4H,WACL5H,EAAIyB,GAAG9B,eAEVK,EAAI4H,WAOZA,OAAQ,WACJtG,EAjXU,SAmXV,IAAIuG,EAAkBC,0BAYtB,GAVA9H,EAAI6E,UAAUkD,SACd/H,EAAI+E,KAAKgD,SACT/H,EAAIkF,UAAU8C,QAEVhI,EAAIyB,GAAG/B,YACPmI,GAAmB7H,EAAIyB,GAAG/B,UAAY,KAG1CM,EAAIiI,oBAAoBJ,GAEpB7H,EAAIR,gBAAiB,CACrB,IAAIqH,EAAe,CAAEG,YAAa,GAClCH,SAAwB,IACxBpK,EAAE,QAAQsJ,IAAIc,GAGlB3G,EAAUgI,IAAI,yBACdlI,EAAIa,GAAGqH,IA9XA,QAiYPlI,EAAI+E,KAAKC,KAAK,QAAS,YAAYmD,WAAW,SAC9CnI,EAAI6E,UAAUG,KAAK,QAAS,UAC5BhF,EAAIkF,UAAUF,KAAK,QAAS,kBAGxBhF,EAAIyB,GAAGkD,cACL3E,EAAIyB,GAAGgE,iBAA0D,IAAxCzF,EAAIiC,aAAajC,EAAIoI,SAAS3I,OACrDO,EAAIiC,aAAaC,UACjBlC,EAAIiC,aAAaC,SAAS6F,SAI9B/H,EAAIyB,GAAG4G,eAAiBrI,EAAIsH,gBAC5B7K,EAAEuD,EAAIsH,gBAAgBgB,QAE1BtI,EAAIoI,SAAW,KACfpI,EAAIyH,QAAU,KACdzH,EAAIiC,aAAe,KACnBjC,EAAIuI,WAAa,EAEjBjH,EA3ZgB,eA8ZpBmF,WAAY,SAAU+B,GAElB,GAAIxI,EAAI+C,MAAO,CAEX,IAAI0F,EAAY5L,SAAS6L,gBAAgBC,YAAc9K,OAAO+K,WAC1DrC,EAAS1I,OAAOgL,YAAcJ,EAClCzI,EAAI+E,KAAKgB,IAAI,SAAUQ,GACvBvG,EAAI4G,GAAKL,OAETvG,EAAI4G,GAAK4B,GAAa/H,EAAQ8F,SAG7BvG,EAAIR,iBACLQ,EAAI+E,KAAKgB,IAAI,SAAU/F,EAAI4G,IAG/BtF,EAAY,WAOhB6F,eAAgB,WACZ,IAAIpD,EAAO/D,EAAIJ,MAAMI,EAAI8D,OAGzB9D,EAAImF,iBAAiB4C,SAEjB/H,EAAIyH,SACJzH,EAAIyH,QAAQM,SAEXhE,EAAKC,SACND,EAAO/D,EAAI8I,QAAQ9I,EAAI8D,QAG3B,IAAIrE,EAAOsE,EAAKtE,KAQhB,GANA6B,EAAY,eAAgB,CAACtB,EAAIoI,SAAWpI,EAAIoI,SAAS3I,KAAO,GAAIA,IAIpEO,EAAIoI,SAAWrE,GAEV/D,EAAIiC,aAAaxC,GAAO,CACzB,IAAIK,IAASE,EAAIyB,GAAGhC,IAAQO,EAAIyB,GAAGhC,GAAMK,OAGzCwB,EAAY,mBAAoBxB,GAG5BE,EAAIiC,aAAaxC,IADjBK,GACyBrD,EAAEqD,GAO/BK,GAAoBA,IAAqB4D,EAAKtE,MAC9CO,EAAIkF,UAAU6D,YAAY,OAAS5I,EAAmB,WAG1D,IAAI6I,EAAahJ,EAAI,MAAQP,EAAKkC,OAAO,GAAG4D,cAAgB9F,EAAKoC,MAAM,IAAIkC,EAAM/D,EAAIiC,aAAaxC,IAClGO,EAAIiJ,cAAcD,EAAYvJ,GAE9BsE,EAAKmF,WAAY,EAEjB5H,EA7dW,SA6deyC,GAC1B5D,EAAmB4D,EAAKtE,KAGxBO,EAAIkF,UAAUiE,QAAQnJ,EAAImF,kBAE1B7D,EAAY,gBAOhB2H,cAAe,SAAUD,EAAYvJ,GACjCO,EAAIyH,QAAUuB,EAEVA,EACIhJ,EAAIyB,GAAGkD,cAAgB3E,EAAIyB,GAAGgE,iBACH,IAA3BzF,EAAIiC,aAAaxC,GAEZO,EAAIyH,QAAQ2B,KAAK,cAAc/F,QAChCrD,EAAIyH,QAAQ5B,OAAO7D,KAGvBhC,EAAIyH,QAAUuB,EAGlBhJ,EAAIyH,QAAU,GAGlBnG,EA9fkB,gBA+flBtB,EAAIkF,UAAUwB,SAAS,OAASjH,EAAO,WAEvCO,EAAImF,iBAAiBU,OAAO7F,EAAIyH,UAQpCqB,QAAS,SAAUhF,GACf,IACIrE,EADAsE,EAAO/D,EAAIJ,MAAMkE,GAUrB,GAPIC,EAAKsF,QACLtF,EAAO,CAAE5C,GAAI1E,EAAEsH,KAEftE,EAAOsE,EAAKtE,KACZsE,EAAO,CAAEnH,KAAMmH,EAAMuF,IAAKvF,EAAKuF,MAG/BvF,EAAK5C,GAAI,CAIT,IAHA,IAAI+C,EAAQlE,EAAIkE,MAGPP,EAAI,EAAGA,EAAIO,EAAMb,OAAQM,IAC9B,GAAII,EAAK5C,GAAGoI,SAAS,OAASrF,EAAMP,IAAK,CACrClE,EAAOyE,EAAMP,GACb,MAIRI,EAAKuF,IAAMvF,EAAK5C,GAAG6D,KAAK,gBACnBjB,EAAKuF,MACNvF,EAAKuF,IAAMvF,EAAK5C,GAAG6D,KAAK,SAUhC,OANAjB,EAAKtE,KAAOA,GAAQO,EAAIyB,GAAGhC,MAAQ,SACnCsE,EAAKD,MAAQA,EACbC,EAAKC,QAAS,EACdhE,EAAIJ,MAAMkE,GAASC,EACnBzC,EAAY,eAAgByC,GAErB/D,EAAIJ,MAAMkE,IAOrB0F,SAAU,SAAUrI,EAAIsI,GACpB,IAAIC,EAAW,SAAUnI,GACrBA,EAAEoI,MAAQxK,KACVa,EAAI4J,WAAWrI,EAAGJ,EAAIsI,IAGrBA,IACDA,EAAU,IAGd,IAAII,EAAQ,sBACZJ,EAAQtF,OAAShD,EAEbsI,EAAQ7J,OACR6J,EAAQ7F,OAAQ,EAChBzC,EAAG+G,IAAI2B,GAAO5K,GAAG4K,EAAOH,KAExBD,EAAQ7F,OAAQ,EACZ6F,EAAQK,SACR3I,EAAG+G,IAAI2B,GAAO5K,GAAG4K,EAAOJ,EAAQK,SAAUJ,IAE1CD,EAAQ7J,MAAQuB,EAChBA,EAAG+G,IAAI2B,GAAO5K,GAAG4K,EAAOH,MAIpCE,WAAY,SAAUrI,EAAGJ,EAAIsI,GAIzB,SAHoCrG,IAArBqG,EAAQM,SAAyBN,EAAQM,SAAWtN,EAAE4C,cAAckF,SAASwF,aAG9D,IAAZxI,EAAEyI,OAAezI,EAAE0I,SAAW1I,EAAE2I,SAAW3I,EAAE4I,QAAU5I,EAAE6I,UAA3E,CAIA,IAAIC,OAAkCjH,IAAtBqG,EAAQY,UAA0BZ,EAAQY,UAAY5N,EAAE4C,cAAckF,SAAS8F,UAE/F,GAAIA,EACA,GAAI5N,EAAE6N,WAAWD,IACb,IAAKA,EAAU7E,KAAKxF,GAChB,OAAO,OAGX,GAAIS,EAAQ8J,QAAUF,EAClB,OAAO,EAKf9I,EAAE9B,OACF8B,EAAElD,iBAGE2B,EAAIiE,QACJ1C,EAAEiJ,mBAIVf,EAAQtI,GAAK1E,EAAE8E,EAAEoI,OACbF,EAAQK,WACRL,EAAQ7J,MAAQuB,EAAGiI,KAAKK,EAAQK,WAEpC9J,EAAIV,KAAKmK,KAObgB,aAAc,SAAUC,EAAQC,GAE5B,GAAI3K,EAAIT,UAAW,CACXU,IAAgByK,GAChB1K,EAAIkF,UAAU6D,YAAY,SAAW9I,GAGpC0K,GAAmB,YAAXD,IACTC,EAAO3K,EAAIyB,GAAG2D,UAGlB,IAAIxI,EAAO,CACP8N,OAAQA,EACRC,KAAMA,GAGVrJ,EAAY,eAAgB1E,GAE5B8N,EAAS9N,EAAK8N,OACdC,EAAO/N,EAAK+N,KAEZ3K,EAAIT,UAAU0B,KAAK0J,GAEnB3K,EAAIT,UAAU6J,KAAK,KAAKnK,GAAG,SAAS,SAAUsC,GAC1CA,EAAEqJ,8BAGN5K,EAAIkF,UAAUwB,SAAS,SAAWgE,GAClCzK,EAAcyK,IAUtBzF,cAAe,SAAU9G,GAErB,IAAI1B,EAAE0B,GAAQoL,SAtpBI,qBAspBlB,CAIA,IAAIsB,EAAiB7K,EAAIyB,GAAGgD,oBACxBqG,EAAY9K,EAAIyB,GAAGiD,eAEvB,GAAImG,GAAkBC,EAClB,OAAO,EAIP,IAAK9K,EAAIyH,SAAWhL,EAAE0B,GAAQoL,SAAS,cAAiBvJ,EAAIT,WAAapB,IAAW6B,EAAIT,UAAU,GAC9F,OAAO,EAIX,GAAKpB,IAAW6B,EAAIyH,QAAQ,IAAOhL,EAAEW,SAAS4C,EAAIyH,QAAQ,GAAItJ,IAOvD,GAAI0M,EACP,OAAO,OAPP,GAAIC,GAEIrO,EAAEW,SAASP,SAAUsB,GACrB,OAAO,EAQvB,OAAO,IAEX+I,eAAgB,SAAU6D,GACtB/K,EAAI6E,UAAU6B,SAASqE,GACvB/K,EAAI+E,KAAK2B,SAASqE,IAEtB9C,oBAAqB,SAAU8C,GAC3B5L,KAAK0F,UAAUkE,YAAYgC,GAC3B/K,EAAI+E,KAAKgE,YAAYgC,IAEzBjE,cAAe,SAAU0B,GACrB,OAAS3L,SAASwK,KAAK2D,cAAiBxC,GAAa/H,EAAQ8F,WAEjEmB,UAAW,YACN1H,EAAIyB,GAAG6G,MAAQtI,EAAIyH,QAAQ2B,KAAKpJ,EAAIyB,GAAG6G,OAAOlE,GAAG,GAAKpE,EAAI+E,MAAMuD,SAErEX,WAAY,SAAUpG,GAClB,GAAIA,EAAEpD,SAAW6B,EAAI+E,KAAK,KAAOtI,EAAEW,SAAS4C,EAAI+E,KAAK,GAAIxD,EAAEpD,QAEvD,OADA6B,EAAI0H,aACG,GAGfuD,aAAc,SAAUvF,EAAUC,EAAQ5B,GACtC,IAAImH,EACAnH,EAAKnH,OACL+I,EAASlJ,EAAE6H,OAAOP,EAAKnH,KAAM+I,IAEjCrE,EArtBiB,cAqtBe,CAACoE,EAAUC,EAAQ5B,IAEnDtH,EAAE0O,KAAKxF,GAAQ,SAAUtB,EAAK5G,GAC1B,QAAc2F,IAAV3F,IAAiC,IAAVA,EACvB,OAAO,EAGX,IADAyN,EAAM7G,EAAI+G,MAAM,MACR/H,OAAS,EAAG,CAChB,IAAIlC,EAAKuE,EAAS0D,KAAKiC,QAAiBH,EAAI,IAE5C,GAAI/J,EAAGkC,OAAS,EAAG,CACf,IAAI2B,EAAOkG,EAAI,GACF,gBAATlG,EACI7D,EAAG,KAAO1D,EAAM,IAChB0D,EAAGmK,YAAY7N,GAEH,QAATuH,EACH7D,EAAGoK,GAAG,OACNpK,EAAG6D,KAAK,MAAOvH,GAEf0D,EAAGmK,YAAY7O,EAAE,SAASuI,KAAK,MAAOvH,GAAOuH,KAAK,QAAS7D,EAAG6D,KAAK,WAGvE7D,EAAG6D,KAAKkG,EAAI,GAAIzN,SAKxBiI,EAAS0D,KAAKiC,QAAiBhH,GAAKpD,KAAKxD,OAKrDsJ,kBAAmB,WAEf,QAA0B3D,IAAtBpD,EAAIwL,cAA6B,CACjC,IAAIC,EAAY5O,SAASuE,cAAc,OACvCqK,EAAUvI,MAAMwI,QAAU,iFAC1B7O,SAASwK,KAAKhG,YAAYoK,GAC1BzL,EAAIwL,cAAgBC,EAAUE,YAAcF,EAAU9C,YACtD9L,SAASwK,KAAKuE,YAAYH,GAE9B,OAAOzL,EAAIwL,gBAWnB/O,EAAE4C,cAAgB,CACdkD,SAAU,KACVsJ,MAAOvL,EAAcmC,UACrB4C,QAAS,GAET/F,KAAM,SAAUmK,EAAS3F,GAWrB,OAVAxB,KAKImH,EAHCA,EAGShN,EAAE6H,QAAO,EAAM,GAAImF,GAFnB,IAKN7F,OAAQ,EAChB6F,EAAQ3F,MAAQA,GAAS,EAClB3E,KAAKoD,SAASjD,KAAKmK,IAG9B3E,MAAO,WACH,OAAOrI,EAAE4C,cAAckD,UAAY9F,EAAE4C,cAAckD,SAASuC,SAGhEgH,eAAgB,SAAUnL,EAAMoL,GACxBA,EAAOtC,UACPhN,EAAE4C,cAAckF,SAAS5D,GAAQoL,EAAOtC,SAE5ChN,EAAE6H,OAAOnF,KAAK0M,MAAOE,EAAOF,OAC5B1M,KAAKkG,QAAQ2G,KAAKrL,IAGtB4D,SAAU,CAKN8F,UAAW,EAEXhG,IAAK,KAEL0F,UAAU,EAEVrK,UAAW,GAEXH,WAAW,EAEX+I,MAAO,GAEP7D,qBAAqB,EAErBC,gBAAgB,EAEhBe,gBAAgB,EAEhBd,cAAc,EAEdC,iBAAiB,EAEjBJ,OAAO,EAEPsB,UAAU,EAEVnG,aAAc,EAEdyH,UAAW,KAEX5H,gBAAiB,OAEjB8G,WAAY,OAEZL,UAAW,OAEX9D,YAAa,0EAEbE,OAAQ,cAER+C,SAAU,aAEViD,eAAe,IAOvB5L,EAAEwP,GAAG5M,cAAgB,SAAUoK,GAC3BnH,IAEA,IAAI4J,EAAOzP,EAAE0C,MAGb,GAAuB,iBAAZsK,EAEP,GAAgB,SAAZA,EAAoB,CACpB,IAAI7J,EACAuM,EAAW5L,EAAQ2L,EAAKtP,KAAK,iBAAmBsP,EAAK,GAAG7M,cACxDyE,EAAQsI,SAASC,UAAU,GAAI,KAAO,EAEtCF,EAASvM,MACTA,EAAQuM,EAASvM,MAAMkE,IAEvBlE,EAAQsM,EACJC,EAASrC,WACTlK,EAAQA,EAAMwJ,KAAK+C,EAASrC,WAEhClK,EAAQA,EAAMwE,GAAGN,IAErB9D,EAAI4J,WAAW,CAAED,MAAO/J,GAASsM,EAAMC,QAEnCnM,EAAIiE,QACJjE,EAAIyJ,GAAS3H,MAAM9B,EAAKsM,MAAM7J,UAAUZ,MAAM2D,KAAK6G,UAAW,SAKtE5C,EAAUhN,EAAE6H,QAAO,EAAM,GAAImF,GAOzBlJ,EACA2L,EAAKtP,KAAK,gBAAiB6M,GAE3ByC,EAAK,GAAG7M,cAAgBoK,EAG5BzJ,EAAIwJ,SAAS0C,EAAMzC,GAGvB,OAAOyC,GAOX,IACIK,EACAC,EACAC,EACAC,EAAyB,WACjBD,IACAD,EAAmBG,MAAMF,EAAmB/F,SAAS6F,IAAexE,SACpE0E,EAAqB,OAIjChQ,EAAE4C,cAAcyM,eAXA,SAW0B,CACtCrC,QAAS,CACLmD,YAAa,OACb9M,OAAQ,GACR+M,UAAW,qBAEfhB,MAAO,CAEHiB,WAAY,WACR9M,EAAIkE,MAAM8H,KApBN,UAsBJtL,EAAOqM,gBAA+B,WAClCL,QAIRM,UAAW,SAAUjJ,EAAM2B,GAIvB,GAFAgH,IAEI3I,EAAKuF,IAAK,CACV,IAAI2D,EAAWjN,EAAIyB,GAAG5B,OAClBsB,EAAK1E,EAAEsH,EAAKuF,KAEhB,GAAInI,EAAGkC,OAAQ,CAGX,IAAI6J,EAAS/L,EAAG,GAAGgM,WACfD,GAAUA,EAAO7D,UACZmD,IACDD,EAAeU,EAASL,YACxBJ,EAAqB1L,EAAOyL,GAC5BA,EAAe,OAASA,GAG5BE,EAAqBtL,EAAGwL,MAAMH,GAAoBzE,SAASgB,YAAYwD,IAG3EvM,EAAIyK,aAAa,cAEjBzK,EAAIyK,aAAa,QAASwC,EAASJ,WACnC1L,EAAK1E,EAAE,SAIX,OADAsH,EAAKqJ,cAAgBjM,EACdA,EAKX,OAFAnB,EAAIyK,aAAa,SACjBzK,EAAIiL,aAAavF,EAAU,GAAI3B,GACxB2B,MAQnB,IACI2H,EACAC,EAAoB,WACZD,GACA5Q,EAAEI,SAASwK,MAAM0B,YAAYsE,IAGrCE,EAAsB,WAClBD,IACItN,EAAIwN,KACJxN,EAAIwN,IAAIC,SAIpBhR,EAAE4C,cAAcyM,eAdF,OAc0B,CAEpCrC,QAAS,CACLiE,SAAU,KACVC,OAAQ,eACRC,OAAQ,wDAGZ/B,MAAO,CACHgC,SAAU,WACN7N,EAAIkE,MAAM8H,KAxBR,QAyBFqB,EAAWrN,EAAIyB,GAAGqM,KAAKH,OAEvBjN,EAAOqM,aAA6BQ,GACpC7M,EAAO,oBAA2B6M,IAEtCQ,QAAS,SAAUhK,GAEXsJ,GACA5Q,EAAEI,SAASwK,MAAMX,SAAS2G,GAG9BrN,EAAIyK,aAAa,WAEjB,IAAIuD,EAAOvR,EAAE6H,OAAO,CAChB2J,IAAKlK,EAAKuF,IACV4E,QAAS,SAAUtR,EAAMuR,EAAYC,GACjC,IAAIC,EAAO,CACPzR,KAAMA,EACN0R,IAAKF,GAGT9M,EAAY,YAAa+M,GAEzBrO,EAAIiJ,cAAcxM,EAAE4R,EAAKzR,MAhD/B,QAkDMmH,EAAKwK,UAAW,EAEhBjB,IAEAtN,EAAI0H,YAEJF,YAAW,WACPxH,EAAI+E,KAAK2B,SA7gCf,eA8gCK,IAEH1G,EAAIyK,aAAa,SAEjBnJ,EAAY,qBAEhBkN,MAAO,WACHlB,IACAvJ,EAAKwK,SAAWxK,EAAK0K,WAAY,EACjCzO,EAAIyK,aAAa,QAASzK,EAAIyB,GAAGqM,KAAKF,OAAOxL,QAAQ,QAAS2B,EAAKuF,QAExEtJ,EAAIyB,GAAGqM,KAAKJ,UAIf,OAFA1N,EAAIwN,IAAM/Q,EAAEqR,KAAKE,GAEV,OAQnB,IAAIU,EAiPAC,EAhPAC,EAAY,SAAU7K,GAClB,GAAIA,EAAKnH,WAA4BwG,IAApBW,EAAKnH,KAAKiS,MACvB,OAAO9K,EAAKnH,KAAKiS,MAErB,IAAIvF,EAAMtJ,EAAIyB,GAAGqN,MAAMC,SAEvB,GAAIzF,EAAK,CACL,GAAI7M,EAAE6N,WAAWhB,GACb,OAAOA,EAAI9D,KAAKxF,EAAK+D,GAClB,GAAIA,EAAK5C,GACZ,OAAO4C,EAAK5C,GAAG6D,KAAKsE,IAAQ,GAGpC,MAAO,IAGf7M,EAAE4C,cAAcyM,eAAe,QAAS,CAEpCrC,QAAS,CACL3J,OAAQ,iOAYR6N,OAAQ,mBACRoB,SAAU,QACVC,aAAa,EACbpB,OAAQ,sDAGZ/B,MAAO,CACHoD,UAAW,WACP,IAAIC,EAAQlP,EAAIyB,GAAGqN,MACfK,EAAK,SAETnP,EAAIkE,MAAM8H,KAAK,SAEftL,EAtlCK,OAslCeyO,GAAI,WACM,UAAtBnP,EAAIoI,SAAS3I,MAAoByP,EAAMvB,QACvClR,EAAEI,SAASwK,MAAMX,SAASwI,EAAMvB,WAIxCjN,EAjmCM,QAimCeyO,GAAI,WACjBD,EAAMvB,QACNlR,EAAEI,SAASwK,MAAM0B,YAAYmG,EAAMvB,QAEvClN,EAAQyH,IAAI,iBAGhBxH,EAAO,SAAWyO,EAAInP,EAAIoP,cAE9BA,YAAa,WACT,IAAIrL,EAAO/D,EAAIoI,SACVrE,GAASA,EAAKsL,KAEfrP,EAAIyB,GAAGqN,MAAME,aAEbjL,EAAKsL,IAAItJ,IAAI,aAAc/F,EAAI4G,GADpB,IAInB0I,gBAAiB,SAAUvL,GACnBA,EAAKsL,MAELtL,EAAKwL,SAAU,EAEXb,GACAc,cAAcd,GAGlB3K,EAAK0L,mBAAoB,EAEzBnO,EAAY,eAAgByC,GAExBA,EAAK2L,YACD1P,EAAIyH,SACJzH,EAAIyH,QAAQsB,YAAY,eAE5BhF,EAAK2L,WAAY,KAS7BC,cAAe,SAAU5L,GAErB,IAAI6L,EAAU,EACVP,EAAMtL,EAAKsL,IAAI,IACE,SAAjBQ,EAA2BC,GAEnBpB,GACAc,cAAcd,GAGlBA,EAAeqB,aAAY,WACnBV,EAAIW,aAAe,EACnBhQ,EAAIsP,gBAAgBvL,IAIpB6L,EAAU,KACVJ,cAAcd,GAIF,KADhBkB,EAEIC,EAAe,IACI,KAAZD,EACPC,EAAe,IACI,MAAZD,GACPC,EAAe,QAEpBC,GAGXD,CAAe,IAGnBI,SAAU,SAAUlM,EAAM2B,GAEtB,IAAIwK,EAAQ,EAiCRC,EAAc,WACNpM,IACAA,EAAKsL,IAAInH,IAAI,cACTnE,IAAS/D,EAAIoI,WACbpI,EAAIsP,gBAAgBvL,GACpB/D,EAAIyK,aAAa,QAASyE,EAAMtB,OAAOxL,QAAQ,QAAS2B,EAAKuF,OAGjEvF,EAAKwL,SAAU,EACfxL,EAAKqM,QAAS,EACdrM,EAAK0K,WAAY,IAGzBS,EAAQlP,EAAIyB,GAAGqN,MAGf3N,EAAKuE,EAAS0D,KAAK,YACvB,GAAIjI,EAAGkC,OAAQ,CACX,IAAIgM,EAAMxS,SAASuE,cAAc,OACjCiO,EAAItO,UAAY,UACZgD,EAAK5C,IAAM4C,EAAK5C,GAAGiI,KAAK,OAAO/F,SAC/BgM,EAAIgB,IAAMtM,EAAK5C,GAAGiI,KAAK,OAAOpE,KAAK,QAEvCjB,EAAKsL,IAAM5S,EAAE4S,GAAKpQ,GAAG,kBArDJ,SAAjBqR,IACQvM,IACIA,EAAKsL,IAAI,GAAGkB,UACZxM,EAAKsL,IAAInH,IAAI,cAETnE,IAAS/D,EAAIoI,WACbpI,EAAIsP,gBAAgBvL,GAEpB/D,EAAIyK,aAAa,UAGrB1G,EAAKwL,SAAU,EACfxL,EAAKqM,QAAS,EAEd9O,EAAY,wBAKZ4O,EACY,IACR1I,WAAW8I,EAAgB,KAE3BH,QA8BuClR,GAAG,kBAAmBkR,GAC7Ed,EAAI/F,IAAMvF,EAAKuF,IAIXnI,EAAGoK,GAAG,SACNxH,EAAKsL,IAAMtL,EAAKsL,IAAImB,UAGxBnB,EAAMtL,EAAKsL,IAAI,IACPW,aAAe,EACnBjM,EAAKwL,SAAU,EACPF,EAAI9E,QACZxG,EAAKwL,SAAU,GAWvB,OAPAvP,EAAIiL,aAAavF,EAAU,CACvBmJ,MAAOD,EAAU7K,GACjB0M,gBAAiB1M,EAAKsL,KACvBtL,GAEH/D,EAAIoP,cAEArL,EAAKwL,SACDb,GAAcc,cAAcd,GAE5B3K,EAAK0K,WACL/I,EAASgB,SAAS,eAClB1G,EAAIyK,aAAa,QAASyE,EAAMtB,OAAOxL,QAAQ,QAAS2B,EAAKuF,QAE7D5D,EAASqD,YAAY,eACrB/I,EAAIyK,aAAa,UAEd/E,IAGX1F,EAAIyK,aAAa,WACjB1G,EAAK2M,SAAU,EAEV3M,EAAKwL,UACNxL,EAAK2L,WAAY,EACjBhK,EAASgB,SAAS,eAClB1G,EAAI2P,cAAc5L,IAGf2B,OAgBnBjJ,EAAE4C,cAAcyM,eAAe,OAAQ,CAEnCrC,QAAS,CACLkH,SAAS,EACTC,OAAQ,cACRC,SAAU,IACVC,OAAQ,SAAUC,GACd,OAAOA,EAAQxF,GAAG,OAASwF,EAAUA,EAAQ3H,KAAK,SAI1DyC,MAAO,CAEHmF,SAAU,WACN,IAEIlC,EAFAmC,EAASjR,EAAIyB,GAAGyP,KAChB/B,EAAK,QAGT,GAAK8B,EAAON,SAAY3Q,EAAIgD,mBAA5B,CAIA,IAqBImO,EACAC,EAtBAP,EAAWI,EAAOJ,SAClBQ,EAAiB,SAAUvC,GACvB,IAAIwC,EAASxC,EAAM0B,QAAQrI,WAAW,SAASA,WAAW,SAASzB,SAAS,sBACxE6K,EAAa,OAAUN,EAAOJ,SAAW,IAAQ,KAAOI,EAAOL,OAC/DY,EAAS,CACLnL,SAAU,QACVoL,OAAQ,KACRC,KAAM,EACNvL,IAAK,EACLwL,8BAA+B,UAEnCC,EAAI,aAKR,OAHAJ,EAAO,WAAaI,GAAKJ,EAAO,QAAUI,GAAKJ,EAAO,MAAQI,GAAKJ,EAAOI,GAAKL,EAE/ED,EAAOvL,IAAIyL,GACJF,GAEXO,EAAkB,WACd7R,EAAIyH,QAAQ1B,IAAI,aAAc,YAKtCrF,EAAO,gBAAkByO,GAAI,WACzB,GAAInP,EAAI8R,aAAc,CASlB,GAPAC,aAAaZ,GACbnR,EAAIyH,QAAQ1B,IAAI,aAAc,YAI9B+I,EAAQ9O,EAAIgS,kBAIR,YADAH,KAIJT,EAAcC,EAAevC,IAEjB/I,IAAI/F,EAAIiS,cAEpBjS,EAAI+E,KAAKc,OAAOuL,GAEhBD,EAAc3J,YAAW,WACrB4J,EAAYrL,IAAI/F,EAAIiS,YAAW,IAC/Bd,EAAc3J,YAAW,WAErBqK,IAEArK,YAAW,WACP4J,EAAYzT,SACZmR,EAAQsC,EAAc,KACtB9P,EAAY,wBACb,MAEJuP,KAEJ,QAMXnQ,EA73Ca,cA63CeyO,GAAI,WAC5B,GAAInP,EAAI8R,aAAc,CAMlB,GAJAC,aAAaZ,GAEbnR,EAAIyB,GAAG9B,aAAekR,GAEjB/B,EAAO,CAER,KADAA,EAAQ9O,EAAIgS,kBAER,OAEJZ,EAAcC,EAAevC,GAGjCsC,EAAYrL,IAAI/F,EAAIiS,YAAW,IAC/BjS,EAAI+E,KAAKc,OAAOuL,GAChBpR,EAAIyH,QAAQ1B,IAAI,aAAc,UAE9ByB,YAAW,WACP4J,EAAYrL,IAAI/F,EAAIiS,gBACrB,QAKXvR,EAx5CM,QAw5CeyO,GAAI,WACjBnP,EAAI8R,eACJD,IACIT,GACAA,EAAYzT,SAEhBmR,EAAQ,WAKpBgD,WAAY,WACR,MAA6B,UAAtB9R,EAAIoI,SAAS3I,MAGxBuS,eAAgB,WACZ,QAAIhS,EAAIoI,SAASmH,SACNvP,EAAIoI,SAASiH,KAO5B4C,WAAY,SAAUC,GAClB,IAAI/Q,EAOAgR,GALAhR,EADA+Q,EACKlS,EAAIoI,SAASiH,IAEbrP,EAAIyB,GAAGyP,KAAKJ,OAAO9Q,EAAIoI,SAASjH,IAAMnB,EAAIoI,WAGnC+J,SACZC,EAAahG,SAASjL,EAAG4E,IAAI,eAAgB,IAC7CsM,EAAgBjG,SAASjL,EAAG4E,IAAI,kBAAmB,IACvDoM,EAAOhM,KAAQ1J,EAAEoB,QAAQuI,YAAcgM,EAQvC,IAAIE,EAAM,CACN/H,MAAOpJ,EAAGoJ,QAEVhE,QAAShG,EAAQY,EAAG0H,cAAgB1H,EAAG,GAAGoR,cAAgBF,EAAgBD,GAU9E,YA/KoBhP,IAApBuL,IACAA,OAAqEvL,IAAnDvG,SAASuE,cAAc,KAAK8B,MAAMsP,cAEjD7D,EAuKC2D,EAAI,kBAAoBA,EAAe,UAAI,aAAeH,EAAOT,KAAO,MAAQS,EAAOhM,IAAM,OAE7FmM,EAAIZ,KAAOS,EAAOT,KAClBY,EAAInM,IAAMgM,EAAOhM,KAEdmM,MAYnB,IAGIG,EAAiB,SAAUC,GACvB,GAAI1S,EAAIiC,aAAsB,OAAG,CAC7B,IAAId,EAAKnB,EAAIiC,aAAsB,OAAEmH,KAAK,UACtCjI,EAAGkC,SAEEqP,IACDvR,EAAG,GAAGmI,IART,oBAcjB7M,EAAE4C,cAAcyM,eAfA,SAe0B,CAEtCrC,QAAS,CACL3J,OAAQ,6JAKR6S,UAAW,aAGXC,SAAU,CACNC,QAAS,CACL/O,MAAO,cACPgP,GAAI,KACJxJ,IAAK,2CAETyJ,MAAO,CACHjP,MAAO,aACPgP,GAAI,IACJxJ,IAAK,4CAET0J,MAAO,CACHlP,MAAO,iBACPwF,IAAK,uBAKjBuC,MAAO,CACHoH,WAAY,WACRjT,EAAIkE,MAAM8H,KA9CN,UAgDJtL,EAAO,gBAAgB,SAAUa,EAAG2R,EAAUC,GACtCD,IAAaC,IAjDjB,WAkDQD,EACAT,IAnDR,WAoDeU,GACPV,GAAe,OAO3B/R,EAAOqM,gBAA+B,WAClC0F,QAIRW,UAAW,SAAUrP,EAAM2B,GACvB,IAAI2N,EAAWtP,EAAKuF,IAChBgK,EAAWtT,EAAIyB,GAAG8R,OAEtB9W,EAAE0O,KAAKmI,EAASV,UAAU,WACtB,GAAIS,EAASG,QAAQrU,KAAK2E,QAAU,EAShC,OARI3E,KAAK2T,KAEDO,EADmB,iBAAZlU,KAAK2T,GACDO,EAASI,OAAOJ,EAASK,YAAYvU,KAAK2T,IAAM3T,KAAK2T,GAAGzP,OAAQgQ,EAAShQ,QAEzElE,KAAK2T,GAAGtN,KAAKrG,KAAMkU,IAGtCA,EAAWlU,KAAKmK,IAAIlH,QAAQ,OAAQiR,IAC7B,KAIf,IAAIM,EAAU,GAQd,OAPIL,EAASX,YACTgB,EAAQL,EAASX,WAAaU,GAElCrT,EAAIiL,aAAavF,EAAUiO,EAAS5P,GAEpC/D,EAAIyK,aAAa,SAEV/E,MAanB,IAAIkO,EAAe,SAAU9P,GACzB,IAAI+P,EAAY7T,EAAIJ,MAAMyD,OAC1B,OAAIS,EAAQ+P,EAAY,EACb/P,EAAQ+P,EACR/P,EAAQ,EACR+P,EAAY/P,EAEhBA,GAEPgQ,EAAoB,SAAUnJ,EAAMoJ,EAAMC,GACtC,OAAOrJ,EAAKvI,QAAQ,WAAY2R,EAAO,GAAG3R,QAAQ,YAAa4R,IAGvEvX,EAAE4C,cAAcyM,eAAe,UAAW,CAEtCrC,QAAS,CACLkH,SAAS,EACTsD,YAAa,oFACbC,QAAS,CAAC,EAAG,GACbC,oBAAoB,EACpBC,QAAQ,EAERC,MAAO,4BACPC,MAAO,yBACPC,SAAU,qBAGd1I,MAAO,CACH2I,YAAa,WAET,IAAIC,EAAMzU,EAAIyB,GAAGiT,QACbvF,EAAK,eAIT,GAFAnP,EAAI2U,WAAY,GAEXF,IAAQA,EAAI9D,QAAS,OAAO,EAEjCvQ,GAAgB,eAEhBM,EAtmDK,OAsmDeyO,GAAI,WAEhBsF,EAAIN,oBACJnU,EAAI+E,KAAK9F,GAAG,QAAUkQ,EAAI,YAAY,WAClC,GAAInP,EAAIJ,MAAMyD,OAAS,EAEnB,OADArD,EAAI4U,QACG,KAKnB1U,EAAUjB,GAAG,UAAYkQ,GAAI,SAAU5N,GACjB,KAAdA,EAAEiF,QACFxG,EAAI6U,OACiB,KAAdtT,EAAEiF,SACTxG,EAAI4U,aAKhBlU,EAAO,eAAiByO,GAAI,SAAU5N,EAAG3E,GACjCA,EAAK+N,OACL/N,EAAK+N,KAAOmJ,EAAkBlX,EAAK+N,KAAM3K,EAAIoI,SAAStE,MAAO9D,EAAIJ,MAAMyD,YAI/E3C,EAjoDa,cAioDeyO,GAAI,SAAU5N,EAAGwP,EAASpL,EAAQ5B,GAC1D,IAAI+Q,EAAI9U,EAAIJ,MAAMyD,OAClBsC,EAAOiK,QAAUkF,EAAI,EAAIhB,EAAkBW,EAAIF,SAAUxQ,EAAKD,MAAOgR,GAAK,MAG9EpU,EAAO,gBAAkByO,GAAI,WACzB,GAAInP,EAAIJ,MAAMyD,OAAS,GAAKoR,EAAIL,SAAWpU,EAAI+U,UAAW,CACtD,IAAIjV,EAAS2U,EAAIR,YACbc,EAAY/U,EAAI+U,UAAYtY,EAAEqD,EAAOsC,QAAQ,YAAaqS,EAAIJ,OAAOjS,QAAQ,UAAW,SAASsE,SAloD/F,qBAmoDFsO,EAAahV,EAAIgV,WAAavY,EAAEqD,EAAOsC,QAAQ,YAAaqS,EAAIH,OAAOlS,QAAQ,UAAW,UAAUsE,SAnoDlG,qBAqoDNqO,EAAUE,OAAM,WACZjV,EAAI6U,UAERG,EAAWC,OAAM,WACbjV,EAAI4U,UAGR5U,EAAIkF,UAAUW,OAAOkP,EAAUrX,IAAIsX,QAI3CtU,EArpDO,SAqpDeyO,GAAI,WAClBnP,EAAIkV,iBAAiBnD,aAAa/R,EAAIkV,iBAE1ClV,EAAIkV,gBAAkB1N,YAAW,WAC7BxH,EAAImV,sBACJnV,EAAIkV,gBAAkB,OACvB,OAIPxU,EArqDM,QAqqDeyO,GAAI,WACrBjP,EAAUgI,IAAIiH,GACdnP,EAAI+E,KAAKmD,IAAI,QAAUiH,GACvBnP,EAAIgV,WAAahV,EAAI+U,UAAY,SAIzCH,KAAM,WACF5U,EAAI2U,WAAY,EAChB3U,EAAI8D,MAAQ8P,EAAa5T,EAAI8D,MAAQ,GACrC9D,EAAImH,kBAER0N,KAAM,WACF7U,EAAI2U,WAAY,EAChB3U,EAAI8D,MAAQ8P,EAAa5T,EAAI8D,MAAQ,GACrC9D,EAAImH,kBAERiO,KAAM,SAAUC,GACZrV,EAAI2U,UAAaU,GAAYrV,EAAI8D,MACjC9D,EAAI8D,MAAQuR,EACZrV,EAAImH,kBAERgO,oBAAqB,WACjB,IAGIxR,EAHA2R,EAAItV,EAAIyB,GAAGiT,QAAQR,QACnBqB,EAAgBC,KAAKC,IAAIH,EAAE,GAAItV,EAAIJ,MAAMyD,QACzCqS,EAAeF,KAAKC,IAAIH,EAAE,GAAItV,EAAIJ,MAAMyD,QAG5C,IAAKM,EAAI,EAAGA,IAAM3D,EAAI2U,UAAYe,EAAeH,GAAgB5R,IAC7D3D,EAAI2V,aAAa3V,EAAI8D,MAAQH,GAEjC,IAAKA,EAAI,EAAGA,IAAM3D,EAAI2U,UAAYY,EAAgBG,GAAe/R,IAC7D3D,EAAI2V,aAAa3V,EAAI8D,MAAQH,IAGrCgS,aAAc,SAAU7R,GAGpB,GAFAA,EAAQ8P,EAAa9P,IAEjB9D,EAAIJ,MAAMkE,GAAOoF,UAArB,CAIA,IAAInF,EAAO/D,EAAIJ,MAAMkE,GAChBC,EAAKC,SACND,EAAO/D,EAAI8I,QAAQhF,IAGvBxC,EAAY,WAAYyC,GAEN,UAAdA,EAAKtE,OACLsE,EAAKsL,IAAM5S,EAAE,2BAA2BwC,GAAG,kBAAkB,WACzD8E,EAAKwL,SAAU,KAChBtQ,GAAG,mBAAmB,WACrB8E,EAAKwL,SAAU,EACfxL,EAAK0K,WAAY,EACjBnN,EAAY,gBAAiByC,MAC9BiB,KAAK,MAAOjB,EAAKuF,MAIxBvF,EAAKmF,WAAY,OAW7BzM,EAAE4C,cAAcyM,eAFA,SAE0B,CACtCrC,QAAS,CACLmM,WAAY,SAAU7R,GAClB,OAAOA,EAAKuF,IAAIlH,QAAQ,UAAU,SAAUyT,GAAK,MAAO,MAAQA,MAEpEC,MAAO,GAEXjK,MAAO,CACHkK,WAAY,WACR,GAAIlY,OAAOmY,iBAAmB,EAAG,CAE7B,IAAIvU,EAAKzB,EAAIyB,GAAGwU,OACZH,EAAQrU,EAAGqU,OAEfA,EAASI,MAAMJ,GAAiBA,IAARA,GAEZ,IACRpV,EAAO,uBAAkC,SAAUa,EAAGwC,GAClDA,EAAKsL,IAAItJ,IAAI,CACToQ,YAAapS,EAAKsL,IAAI,GAAGW,aAAe8F,EACxCvL,MAAS,YAGjB7J,EAAO,uBAAkC,SAAUa,EAAGwC,GAClDA,EAAKuF,IAAM7H,EAAGmU,WAAW7R,EAAM+R,YAUvDxT,KAryDsB,mBAAX8T,QAAyBA,OAAOC,IAEvCD,OAAO,CAAC,UAAWrW,GACO,YAAL,oBAAPuW,QAAO,YAAAC,EAAPD,UAEdvW,EAAQyW,QAAQ,WAGhBzW,EAAQlC,OAAO2C,QAAU3C,OAAO4Y,OCZxC5Z,SAASmB,iBAAiB,oBAAoB,WAK1C,IAFA,IAAM0Y,EAAY7Z,SAAS8Z,uBAAuB,gBAEzChT,EAAI,EAAGA,EAAI+S,EAAUrT,OAAQM,IAClC+S,EAAU/S,GAAG3F,iBAAiB,SAAS,SAACE,GACpC,IAAMC,EAASD,EAAMC,OACrBA,EAAOhB,UAAUyZ,OAAO,YAExB,IAAMC,EAAQ1Y,EAAO2Y,mBACrBD,EAAM3T,MAAM6T,UAAYF,EAAM3T,MAAM6T,UAAY,KAAO,GAAGpa,OAAAka,EAAM7L,aAAe,GAAE,MACjF6L,EAAM3T,MAAM,kBAAoB2T,EAAM3T,MAAM,kBAAoB,KAAO,aAIhF"}