{"version":3,"sources":["node_modules/browser-pack/_prelude.js","wp-content/themes/jcore2/js/menu.js"],"names":[],"mappings":"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","file":"menu.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n jcoreScrollPos.current = document.documentElement.scrollTop\n getSticky()\n getScroll()\n getToggle()\n getTrigger()\n getFocus()\n onResize()\n searchBar()\n}\nconst searchBar = () => {\n // Searchbar\n// This adds an click event to any button with the class toggle-search\n\n const searchButtons = document.getElementsByClassName('toggle-search')\n if (searchButtons) {\n function searchToggle () {\n document.getElementById('menu-searchbar').classList.toggle('hidden')\n }\n\n function searchbarStatus () {\n this.classList.toggle('searchbar-open')\n }\n\n for (let i = 0; i < searchButtons.length; i++) {\n searchButtons[i].addEventListener('click', searchToggle, false)\n searchButtons[i].addEventListener('click', searchbarStatus, false)\n }\n }\n\n// End of searchbar code\n}\n\nconst getSticky = () => {\n document.querySelectorAll('[data-jsticky]').forEach((sticky, i) => {\n if (sticky.dataset.jsticky !== 'false') {\n const parentElement = sticky.parentNode\n const spacer = document.createElement('div')\n spacer.id = 'spacer_' + i\n parentElement.insertBefore(spacer, sticky)\n jcoreSticky.push({\n element: sticky,\n spacer: spacer,\n showSpacer: (sticky.dataset.jsticky !== 'no-spacer'),\n posY: 0,\n posX: 0,\n height: 0,\n width: 0,\n active: false\n })\n }\n })\n}\nconst getScroll = () => {\n document.querySelectorAll('[data-jscroll=\\'true\\']').forEach((scroll) => {\n const threshold = scroll.dataset.threshold ? scroll.dataset.threshold : 75\n addClass(scroll, 'jcoreLoading')\n jcoreScroll.push({\n element: scroll,\n threshold: threshold,\n loading: true\n })\n })\n}\nconst getToggle = () => {\n document.querySelectorAll('[data-jtoggle]').forEach((toggle) => {\n const targetClass = toggle.dataset.class ? toggle.dataset.class : 'toggle'\n const timeout = toggle.dataset.timeout ? toggle.dataset.timeout : 200\n const group = toggle.dataset.group ? toggle.dataset.group : null\n const targets = toggle.dataset.jtoggle.split(' ').map(t => {\n return document.getElementById(t)\n }).filter(t => {\n return t !== null\n })\n const toggleItem = {\n element: toggle,\n targets,\n targetClass,\n timeout,\n group\n }\n jcoreToggle.push(toggleItem)\n updateClass(toggle, targets, targetClass, hasClass(toggle, targetClass))\n if (('jhover' in toggle.dataset)) {\n toggle.addEventListener('mouseenter', () => {\n toggleHandler(toggleItem)\n })\n toggle.addEventListener('mouseleave', () => {\n toggleHandler(toggleItem)\n })\n } else {\n toggle.addEventListener('click', () => {\n toggleHandler(toggleItem)\n })\n }\n })\n}\n\nconst getTrigger = () => {\n document.querySelectorAll('[data-jtrigger]').forEach((trigger) => {\n const targets = trigger.dataset.jtrigger.split(' ').map(t => {\n return document.getElementById(t)\n }).filter(t => {\n return t !== null\n })\n trigger.addEventListener('click', () => {\n targets.forEach(target => {\n target.click()\n })\n })\n })\n}\n\nconst getFocus = () => {\n document.querySelectorAll('[data-jfocus]').forEach((element) => {\n element.dataset.jfocus.split(',').forEach(id => {\n let target = null\n if (id === 'parent') {\n target = element.parentElement\n } else {\n target = document.getElementById(id)\n }\n if (target !== null) {\n let found = false\n jcoreFocus.forEach(t => {\n if (t.target === target) {\n found = true\n t.source.push(element)\n }\n })\n if (!found) {\n jcoreFocus.push({\n target,\n source: [element],\n active: false,\n timeout: null\n })\n }\n }\n })\n })\n setFocus()\n}\n\nconst setFocus = () => {\n jcoreFocus.forEach(focus => {\n focus.source.forEach(source => {\n source.addEventListener('focus', () => {\n addClass(focus.target, 'focus')\n focus.active = true\n })\n source.addEventListener('blur', () => {\n focus.active = false\n focus.timeout = setTimeout(() => {\n if (!focus.active) {\n removeClass(focus.target, 'focus')\n }\n }, 50)\n })\n })\n })\n}\n\n// Check for stickyness in menus\nconst onScroll = () => {\n scrollHandler()\n checkStickyPos()\n checkScrollPos()\n}\n\nconst scrollHandler = () => {\n jcoreScrollPos.last = jcoreScrollPos.current\n jcoreScrollPos.current = getScrollPosition()\n if (jcoreScrollPos.current > jcoreScrollPos.last) {\n // Scrolling down\n jcoreScrollPos.up = null\n if (jcoreScrollPos.down === null) {\n jcoreScrollPos.down = jcoreScrollPos.last\n }\n } else if (jcoreScrollPos.current < jcoreScrollPos.last) {\n // Scrolling up\n jcoreScrollPos.down = null\n if (jcoreScrollPos.up === null) {\n jcoreScrollPos.up = jcoreScrollPos.last\n }\n }\n}\n// Update info about menu placement on resize\nconst onResize = () => {\n jcoreSticky.forEach(sticky => {\n const pos = getPos(sticky.spacer)\n sticky.posY = pos.y\n sticky.posX = pos.x\n sticky.height = sticky.element.offsetHeight\n sticky.width = sticky.element.offsetWidth\n\n })\n checkStickyPos()\n checkScrollPos()\n}\n\nconst checkStickyPos = () => {\n // Check Sticky\n jcoreSticky.forEach(sticky => {\n if (jcoreScrollPos.current >= sticky.posY && !sticky.active) {\n activateSticky(sticky, true)\n } else if (jcoreScrollPos.current < sticky.posY && sticky.active) {\n activateSticky(sticky, false)\n }\n\n })\n}\n\nconst checkScrollPos = () => {\n // Check Scroll\n jcoreScroll.forEach(scroll => {\n if (jcoreScrollPos.current < scroll.threshold) {\n addClass(scroll.element, 'scrollTop')\n } else {\n removeClass(scroll.element, 'scrollTop')\n }\n if (\n jcoreScrollPos.up !== null &&\n jcoreScrollPos.up - jcoreScrollPos.current > scroll.threshold\n ) {\n addClass(scroll.element, 'scrollUp')\n removeClass(scroll.element, 'scrollDown')\n }\n if (\n jcoreScrollPos.down !== null &&\n jcoreScrollPos.current - jcoreScrollPos.down > scroll.threshold\n ) {\n addClass(scroll.element, 'scrollDown')\n removeClass(scroll.element, 'scrollUp')\n }\n if (scroll.loading) {\n setTimeout(() => {\n removeClass(scroll.element, 'jcoreLoading')\n }, 100)\n scroll.loading = false\n }\n })\n}\n\n// Read position of elements.\nconst getPos = (el) => {\n let lx = 0\n let ly = 0\n while (el != null) {\n lx += el.offsetLeft\n ly += el.offsetTop\n el = el.offsetParent\n }\n return {\n x: lx,\n y: ly\n }\n}\n\n// Handle the toggle action\nconst toggleHandler = (toggleItem) => {\n const activate = !hasClass(toggleItem.element, toggleItem.targetClass)\n if (activate && toggleItem.group) {\n // If item has group set, look for all other group elements.\n jcoreToggle.forEach(item => {\n if (item.group === toggleItem.group && hasClass(item.element, item.targetClass)) {\n // Deactivate all active group elements.\n updateClass(item.element, item.targets, item.targetClass, false, item.timeout)\n }\n })\n }\n updateClass(toggleItem.element, toggleItem.targets, toggleItem.targetClass, activate, toggleItem.timeout)\n}\n\n// Update the toggle class for all elements\nconst updateClass = (element, targets, targetClass, active, timeout = null) => {\n element.setAttribute('aria-expanded', active ? 'true' : 'false');\n [element, ...targets].forEach(target => {\n if (active) {\n activate(target, targetClass, timeout)\n } else {\n deactivate(target, targetClass, timeout)\n }\n })\n}\n\nconst activate = (element, targetClass, timeout = null) => {\n addClass(element, targetClass)\n if (timeout) {\n addClass(element, 'activate')\n setTimeout(() => {\n removeClass(element, 'activate')\n }, timeout)\n }\n}\nconst deactivate = (element, targetClass, timeout = null) => {\n removeClass(element, targetClass)\n if (timeout) {\n addClass(element, 'deactivate')\n setTimeout(() => {\n removeClass(element, 'deactivate')\n }, timeout)\n }\n}\n\n// Activate / Deactivate Stickyness\nconst activateSticky = (sticky, activate = true) => {\n sticky.active = activate\n if (activate) {\n sticky.spacer.style.height = sticky.showSpacer ? sticky.height + 'px' : ''\n addClass(sticky.element, 'sticky')\n } else {\n sticky.spacer.style.height = ''\n removeClass(sticky.element, 'sticky')\n }\n}\n// Add class to element\nconst addClass = (element, className) => {\n const classes = element.className ? element.className.split(' ') : []\n if (classes.indexOf(className) === -1) {\n classes.push(className)\n element.className = classes.join(' ')\n }\n}\n// Remove class to element\nconst removeClass = (element, className) => {\n const classes = element.className ? element.className.split(' ') : []\n const index = classes.indexOf(className)\n if (index !== -1) {\n classes.splice(index, 1)\n element.className = classes.join(' ')\n }\n}\n// Check if element has class\nconst hasClass = (element, className) => {\n const classes = element.className ? element.className.split(' ') : []\n return (classes.indexOf(className) !== -1)\n}\n\nconst getScrollPosition = () => {\n const bodyTop = document.body.scrollTop\n const elementTop = document.documentElement.scrollTop\n if (bodyTop > elementTop) return bodyTop\n return elementTop\n}\n\nwindow.addEventListener('resize', onResize)\nwindow.addEventListener('scroll', onScroll)\nwindow.addEventListener('load', menuInit)\n"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJ3cC1jb250ZW50L3RoZW1lcy9qY29yZTIvanMvbWVudS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0FDQUEsSUFBTSxXQUFXLEdBQUcsRUFBcEI7QUFDQSxJQUFNLFdBQVcsR0FBRyxFQUFwQjtBQUNBLElBQU0sV0FBVyxHQUFHLEVBQXBCO0FBQ0EsSUFBTSxVQUFVLEdBQUcsRUFBbkI7QUFDQSxJQUFNLGNBQWMsR0FBRztBQUNyQixFQUFBLE9BQU8sRUFBRSxDQURZO0FBRXJCLEVBQUEsSUFBSSxFQUFFLENBRmU7QUFHckIsRUFBQSxFQUFFLEVBQUUsSUFIaUI7QUFJckIsRUFBQSxJQUFJLEVBQUU7QUFKZSxDQUF2QixDLENBT0E7O0FBQ0EsSUFBTSxRQUFRLEdBQUcsU0FBWCxRQUFXLEdBQU07QUFDckIsRUFBQSxjQUFjLENBQUMsT0FBZixHQUF5QixRQUFRLENBQUMsZUFBVCxDQUF5QixTQUFsRDtBQUNBLEVBQUEsU0FBUztBQUNULEVBQUEsU0FBUztBQUNULEVBQUEsU0FBUztBQUNULEVBQUEsVUFBVTtBQUNWLEVBQUEsUUFBUTtBQUNSLEVBQUEsUUFBUTtBQUNSLEVBQUEsU0FBUztBQUNWLENBVEQ7O0FBVUEsSUFBTSxTQUFTLEdBQUcsU0FBWixTQUFZLEdBQU07QUFDdEI7QUFDRjtBQUVFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxzQkFBVCxDQUFnQyxlQUFoQyxDQUF0Qjs7QUFDQSxNQUFJLGFBQUosRUFBbUI7QUFDakIsYUFBUyxZQUFULEdBQXlCO0FBQ3ZCLE1BQUEsUUFBUSxDQUFDLGNBQVQsQ0FBd0IsZ0JBQXhCLEVBQTBDLFNBQTFDLENBQW9ELE1BQXBELENBQTJELFFBQTNEO0FBQ0Q7O0FBRUQsYUFBUyxlQUFULEdBQTRCO0FBQzFCLFdBQUssU0FBTCxDQUFlLE1BQWYsQ0FBc0IsZ0JBQXRCO0FBQ0Q7O0FBRUQsU0FBSyxJ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QyxPQUFELEVBQVUsU0FBVixFQUF3QjtBQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUixHQUFvQixPQUFPLENBQUMsU0FBUixDQUFrQixLQUFsQixDQUF3QixHQUF4QixDQUFwQixHQUFtRCxFQUFuRTtBQUNBLFNBQVEsT0FBTyxDQUFDLE9BQVIsQ0FBZ0IsU0FBaEIsTUFBK0IsQ0FBQyxDQUF4QztBQUNELENBSEQ7O0FBS0EsSUFBTSxpQkFBaUIsR0FBRyxTQUFwQixpQkFBb0IsR0FBTTtBQUM5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBVCxDQUFjLFNBQTlCO0FBQ0EsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGVBQVQsQ0FBeUIsU0FBNUM7QUFDQSxNQUFJLE9BQU8sR0FBRyxVQUFkLEVBQTBCLE9BQU8sT0FBUDtBQUMxQixTQUFPLFVBQVA7QUFDRCxDQUxEOztBQU9BLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixFQUFrQyxRQUFsQztBQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixRQUF4QixFQUFrQyxRQUFsQztBQUNBLE1BQU0sQ0FBQyxnQkFBUCxDQUF3QixNQUF4QixFQUFnQyxRQUFoQyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsImNvbnN0IGpjb3JlU3RpY2t5ID0gW11cbmNvbnN0IGpjb3JlU2Nyb2xsID0gW11cbmNvbnN0IGpjb3JlVG9nZ2xlID0gW11cbmNvbnN0IGpjb3JlRm9jdXMgPSBbXVxuY29uc3QgamNvcmVTY3JvbGxQb3MgPSB7XG4gIGN1cnJlbnQ6IDAsXG4gIGxhc3Q6IDAsXG4gIHVwOiBudWxsLFxuICBkb3duOiBudWxsXG59XG5cbi8vIEluaXRpYWxpemUgTWVudSBFbGVtZW50c1xuY29uc3QgbWVudUluaXQgPSAoKSA9PiB7XG4gIGpjb3JlU2Nyb2xsUG9zLmN1cnJlbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG4gIGdldFN0aWNreSgpXG4gIGdldFNjcm9sbCgpXG4gIGdldFRvZ2dsZSgpXG4gIGdldFRyaWdnZXIoKVxuICBnZXRGb2N1cygpXG4gIG9uUmVzaXplKClcbiAgc2VhcmNoQmFyKClcbn1cbmNvbnN0IHNlYXJjaEJhciA9ICgpID0+IHtcbiAgLy8gU2VhcmNoYmFyXG4vLyBUaGlzIGFkZHMgYW4gY2xpY2sgZXZlbnQgdG8gYW55IGJ1dHRvbiB3aXRoIHRoZSBjbGFzcyB0b2dnbGUtc2VhcmNoXG5cbiAgY29uc3Qgc2VhcmNoQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RvZ2dsZS1zZWFyY2gnKVxuICBpZiAoc2VhcmNoQnV0dG9ucykge1xuICAgIGZ1bmN0aW9uIHNlYXJjaFRvZ2dsZSAoKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudS1zZWFyY2hiYXInKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNlYXJjaGJhclN0YXR1cyAoKSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoJ3NlYXJjaGJhci1vcGVuJylcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaEJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNlYXJjaEJ1dHRvbnNbaV0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZWFyY2hUb2dnbGUsIGZhbHNlKVxuICAgICAgc2VhcmNoQnV0dG9uc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHNlYXJjaGJhclN0YXR1cywgZmFsc2UpXG4gICAgfVxuICB9XG5cbi8vIEVuZCBvZiBzZWFyY2hiYXIgY29kZVxufVxuXG5jb25zdCBnZXRTdGlja3kgPSAoKSA9PiB7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWpzdGlja3ldJykuZm9yRWFjaCgoc3RpY2t5LCBpKSA9PiB7XG4gICAgaWYgKHN0aWNreS5kYXRhc2V0LmpzdGlja3kgIT09ICdmYWxzZScpIHtcbiAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBzdGlja3kucGFyZW50Tm9kZVxuICAgICAgY29uc3Qgc3BhY2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgIHNwYWNlci5pZCA9ICdzcGFjZXJfJyArIGlcbiAgICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHNwYWNlciwgc3RpY2t5KVxuICAgICAgamNvcmVTdGlja3kucHVzaCh7XG4gICAgICAgIGVsZW1lbnQ6IHN0aWNreSxcbiAgICAgICAgc3BhY2VyOiBzcGFjZXIsXG4gICAgICAgIHNob3dTcGFjZXI6IChzdGlja3kuZGF0YXNldC5qc3RpY2t5ICE9PSAnbm8tc3BhY2VyJyksXG4gICAgICAgIHBvc1k6IDAsXG4gICAgICAgIHBvc1g6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGFjdGl2ZTogZmFsc2VcbiAgICAgIH0pXG4gICAgfVxuICB9KVxufVxuY29uc3QgZ2V0U2Nyb2xsID0gKCkgPT4ge1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1qc2Nyb2xsPVxcJ3RydWVcXCddJykuZm9yRWFjaCgoc2Nyb2xsKSA9PiB7XG4gICAgY29uc3QgdGhyZXNob2xkID0gc2Nyb2xsLmRhdGFzZXQudGhyZXNob2xkID8gc2Nyb2xsLmRhdGFzZXQudGhyZXNob2xkIDogNzVcbiAgICBhZGRDbGFzcyhzY3JvbGwsICdqY29yZUxvYWRpbmcnKVxuICAgIGpjb3JlU2Nyb2xsLnB1c2goe1xuICAgICAgZWxlbWVudDogc2Nyb2xsLFxuICAgICAgdGhyZXNob2xkOiB0aHJlc2hvbGQsXG4gICAgICBsb2FkaW5nOiB0cnVlXG4gICAgfSlcbiAgfSlcbn1cbmNvbnN0IGdldFRvZ2dsZSA9ICgpID0+IHtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtanRvZ2dsZV0nKS5mb3JFYWNoKCh0b2dnbGUpID0+IHtcbiAgICBjb25zdCB0YXJnZXRDbGFzcyA9IHRvZ2dsZS5kYXRhc2V0LmNsYXNzID8gdG9nZ2xlLmRhdGFzZXQuY2xhc3MgOiAndG9nZ2xlJ1xuICAgIGNvbnN0IHRpbWVvdXQgPSB0b2dnbGUuZGF0YXNldC50aW1lb3V0ID8gdG9nZ2xlLmRhdGFzZXQudGltZW91dCA6IDIwMFxuICAgIGNvbnN0IGdyb3VwID0gdG9nZ2xlLmRhdGFzZXQuZ3JvdXAgPyB0b2dnbGUuZGF0YXNldC5ncm91cCA6IG51bGxcbiAgICBjb25zdCB0YXJnZXRzID0gdG9nZ2xlLmRhdGFzZXQuanRvZ2dsZS5zcGxpdCgnICcpLm1hcCh0ID0+IHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KVxuICAgIH0pLmZpbHRlcih0ID0+IHtcbiAgICAgIHJldHVybiB0ICE9PSBudWxsXG4gICAgfSlcbiAgICBjb25zdCB0b2dnbGVJdGVtID0ge1xuICAgICAgZWxlbWVudDogdG9nZ2xlLFxuICAgICAgdGFyZ2V0cyxcbiAgICAgIHRhcmdldENsYXNzLFxuICAgICAgdGltZW91dCxcbiAgICAgIGdyb3VwXG4gICAgfVxuICAgIGpjb3JlVG9nZ2xlLnB1c2godG9nZ2xlSXRlbSlcbiAgICB1cGRhdGVDbGFzcyh0b2dnbGUsIHRhcmdldHMsIHRhcmdldENsYXNzLCBoYXNDbGFzcyh0b2dnbGUsIHRhcmdldENsYXNzKSlcbiAgICBpZiAoKCdqaG92ZXInIGluIHRvZ2dsZS5kYXRhc2V0KSkge1xuICAgICAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRvZ2dsZUhhbmRsZXIodG9nZ2xlSXRlbSlcbiAgICAgIH0pXG4gICAgICB0b2dnbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgICAgdG9nZ2xlSGFuZGxlcih0b2dnbGVJdGVtKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICB0b2dnbGVIYW5kbGVyKHRvZ2dsZUl0ZW0pXG4gICAgICB9KVxuICAgIH1cbiAgfSlcbn1cblxuY29uc3QgZ2V0VHJpZ2dlciA9ICgpID0+IHtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtanRyaWdnZXJdJykuZm9yRWFjaCgodHJpZ2dlcikgPT4ge1xuICAgIGNvbnN0IHRhcmdldHMgPSB0cmlnZ2VyLmRhdGFzZXQuanRyaWdnZXIuc3BsaXQoJyAnKS5tYXAodCA9PiB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodClcbiAgICB9KS5maWx0ZXIodCA9PiB7XG4gICAgICByZXR1cm4gdCAhPT0gbnVsbFxuICAgIH0pXG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRhcmdldHMuZm9yRWFjaCh0YXJnZXQgPT4ge1xuICAgICAgICB0YXJnZXQuY2xpY2soKVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuXG5jb25zdCBnZXRGb2N1cyA9ICgpID0+IHtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtamZvY3VzXScpLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICBlbGVtZW50LmRhdGFzZXQuamZvY3VzLnNwbGl0KCcsJykuZm9yRWFjaChpZCA9PiB7XG4gICAgICBsZXQgdGFyZ2V0ID0gbnVsbFxuICAgICAgaWYgKGlkID09PSAncGFyZW50Jykge1xuICAgICAgICB0YXJnZXQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKVxuICAgICAgfVxuICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZVxuICAgICAgICBqY29yZUZvY3VzLmZvckVhY2godCA9PiB7XG4gICAgICAgICAgaWYgKHQudGFyZ2V0ID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgdC5zb3VyY2UucHVzaChlbGVtZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgIGpjb3JlRm9jdXMucHVzaCh7XG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBzb3VyY2U6IFtlbGVtZW50XSxcbiAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICB0aW1lb3V0OiBudWxsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG4gIHNldEZvY3VzKClcbn1cblxuY29uc3Qgc2V0Rm9jdXMgPSAoKSA9PiB7XG4gIGpjb3JlRm9jdXMuZm9yRWFjaChmb2N1cyA9PiB7XG4gICAgZm9jdXMuc291cmNlLmZvckVhY2goc291cmNlID0+IHtcbiAgICAgIHNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgYWRkQ2xhc3MoZm9jdXMudGFyZ2V0LCAnZm9jdXMnKVxuICAgICAgICBmb2N1cy5hY3RpdmUgPSB0cnVlXG4gICAgICB9KVxuICAgICAgc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICAgIGZvY3VzLmFjdGl2ZSA9IGZhbHNlXG4gICAgICAgIGZvY3VzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWZvY3VzLmFjdGl2ZSkge1xuICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZm9jdXMudGFyZ2V0LCAnZm9jdXMnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG5cbi8vIENoZWNrIGZvciBzdGlja3luZXNzIGluIG1lbnVzXG5jb25zdCBvblNjcm9sbCA9ICgpID0+IHtcbiAgc2Nyb2xsSGFuZGxlcigpXG4gIGNoZWNrU3RpY2t5UG9zKClcbiAgY2hlY2tTY3JvbGxQb3MoKVxufVxuXG5jb25zdCBzY3JvbGxIYW5kbGVyID0gKCkgPT4ge1xuICBqY29yZVNjcm9sbFBvcy5sYXN0ID0gamNvcmVTY3JvbGxQb3MuY3VycmVudFxuICBqY29yZVNjcm9sbFBvcy5jdXJyZW50ID0gZ2V0U2Nyb2xsUG9zaXRpb24oKVxuICBpZiAoamNvcmVTY3JvbGxQb3MuY3VycmVudCA+IGpjb3JlU2Nyb2xsUG9zLmxhc3QpIHtcbiAgICAvLyBTY3JvbGxpbmcgZG93blxuICAgIGpjb3JlU2Nyb2xsUG9zLnVwID0gbnVsbFxuICAgIGlmIChqY29yZVNjcm9sbFBvcy5kb3duID09PSBudWxsKSB7XG4gICAgICBqY29yZVNjcm9sbFBvcy5kb3duID0gamNvcmVTY3JvbGxQb3MubGFzdFxuICAgIH1cbiAgfSBlbHNlIGlmIChqY29yZVNjcm9sbFBvcy5jdXJyZW50IDwgamNvcmVTY3JvbGxQb3MubGFzdCkge1xuICAgIC8vIFNjcm9sbGluZyB1cFxuICAgIGpjb3JlU2Nyb2xsUG9zLmRvd24gPSBudWxsXG4gICAgaWYgKGpjb3JlU2Nyb2xsUG9zLnVwID09PSBudWxsKSB7XG4gICAgICBqY29yZVNjcm9sbFBvcy51cCA9IGpjb3JlU2Nyb2xsUG9zLmxhc3RcbiAgICB9XG4gIH1cbn1cbi8vIFVwZGF0ZSBpbmZvIGFib3V0IG1lbnUgcGxhY2VtZW50IG9uIHJlc2l6ZVxuY29uc3Qgb25SZXNpemUgPSAoKSA9PiB7XG4gIGpjb3JlU3RpY2t5LmZvckVhY2goc3RpY2t5ID0+IHtcbiAgICBjb25zdCBwb3MgPSBnZXRQb3Moc3RpY2t5LnNwYWNlcilcbiAgICBzdGlja3kucG9zWSA9IHBvcy55XG4gICAgc3RpY2t5LnBvc1ggPSBwb3MueFxuICAgIHN0aWNreS5oZWlnaHQgPSBzdGlja3kuZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICBzdGlja3kud2lkdGggPSBzdGlja3kuZWxlbWVudC5vZmZzZXRXaWR0aFxuXG4gIH0pXG4gIGNoZWNrU3RpY2t5UG9zKClcbiAgY2hlY2tTY3JvbGxQb3MoKVxufVxuXG5jb25zdCBjaGVja1N0aWNreVBvcyA9ICgpID0+IHtcbiAgLy8gQ2hlY2sgU3RpY2t5XG4gIGpjb3JlU3RpY2t5LmZvckVhY2goc3RpY2t5ID0+IHtcbiAgICBpZiAoamNvcmVTY3JvbGxQb3MuY3VycmVudCA+PSBzdGlja3kucG9zWSAmJiAhc3RpY2t5LmFjdGl2ZSkge1xuICAgICAgYWN0aXZhdGVTdGlja3koc3RpY2t5LCB0cnVlKVxuICAgIH0gZWxzZSBpZiAoamNvcmVTY3JvbGxQb3MuY3VycmVudCA8IHN0aWNreS5wb3NZICYmIHN0aWNreS5hY3RpdmUpIHtcbiAgICAgIGFjdGl2YXRlU3RpY2t5KHN0aWNreSwgZmFsc2UpXG4gICAgfVxuXG4gIH0pXG59XG5cbmNvbnN0IGNoZWNrU2Nyb2xsUG9zID0gKCkgPT4ge1xuICAvLyBDaGVjayBTY3JvbGxcbiAgamNvcmVTY3JvbGwuZm9yRWFjaChzY3JvbGwgPT4ge1xuICAgIGlmIChqY29yZVNjcm9sbFBvcy5jdXJyZW50IDwgc2Nyb2xsLnRocmVzaG9sZCkge1xuICAgICAgYWRkQ2xhc3Moc2Nyb2xsLmVsZW1lbnQsICdzY3JvbGxUb3AnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVDbGFzcyhzY3JvbGwuZWxlbWVudCwgJ3Njcm9sbFRvcCcpXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGpjb3JlU2Nyb2xsUG9zLnVwICE9PSBudWxsICYmXG4gICAgICBqY29yZVNjcm9sbFBvcy51cCAtIGpjb3JlU2Nyb2xsUG9zLmN1cnJlbnQgPiBzY3JvbGwudGhyZXNob2xkXG4gICAgKSB7XG4gICAgICBhZGRDbGFzcyhzY3JvbGwuZWxlbWVudCwgJ3Njcm9sbFVwJylcbiAgICAgIHJlbW92ZUNsYXNzKHNjcm9sbC5lbGVtZW50LCAnc2Nyb2xsRG93bicpXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGpjb3JlU2Nyb2xsUG9zLmRvd24gIT09IG51bGwgJiZcbiAgICAgIGpjb3JlU2Nyb2xsUG9zLmN1cnJlbnQgLSBqY29yZVNjcm9sbFBvcy5kb3duID4gc2Nyb2xsLnRocmVzaG9sZFxuICAgICkge1xuICAgICAgYWRkQ2xhc3Moc2Nyb2xsLmVsZW1lbnQsICdzY3JvbGxEb3duJylcbiAgICAgIHJlbW92ZUNsYXNzKHNjcm9sbC5lbGVtZW50LCAnc2Nyb2xsVXAnKVxuICAgIH1cbiAgICBpZiAoc2Nyb2xsLmxvYWRpbmcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyhzY3JvbGwuZWxlbWVudCwgJ2pjb3JlTG9hZGluZycpXG4gICAgICB9LCAxMDApXG4gICAgICBzY3JvbGwubG9hZGluZyA9IGZhbHNlXG4gICAgfVxuICB9KVxufVxuXG4vLyBSZWFkIHBvc2l0aW9uIG9mIGVsZW1lbnRzLlxuY29uc3QgZ2V0UG9zID0gKGVsKSA9PiB7XG4gIGxldCBseCA9IDBcbiAgbGV0IGx5ID0gMFxuICB3aGlsZSAoZWwgIT0gbnVsbCkge1xuICAgIGx4ICs9IGVsLm9mZnNldExlZnRcbiAgICBseSArPSBlbC5vZmZzZXRUb3BcbiAgICBlbCA9IGVsLm9mZnNldFBhcmVudFxuICB9XG4gIHJldHVybiB7XG4gICAgeDogbHgsXG4gICAgeTogbHlcbiAgfVxufVxuXG4vLyBIYW5kbGUgdGhlIHRvZ2dsZSBhY3Rpb25cbmNvbnN0IHRvZ2dsZUhhbmRsZXIgPSAodG9nZ2xlSXRlbSkgPT4ge1xuICBjb25zdCBhY3RpdmF0ZSA9ICFoYXNDbGFzcyh0b2dnbGVJdGVtLmVsZW1lbnQsIHRvZ2dsZUl0ZW0udGFyZ2V0Q2xhc3MpXG4gIGlmIChhY3RpdmF0ZSAmJiB0b2dnbGVJdGVtLmdyb3VwKSB7XG4gICAgLy8gSWYgaXRlbSBoYXMgZ3JvdXAgc2V0LCBsb29rIGZvciBhbGwgb3RoZXIgZ3JvdXAgZWxlbWVudHMuXG4gICAgamNvcmVUb2dnbGUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLmdyb3VwID09PSB0b2dnbGVJdGVtLmdyb3VwICYmIGhhc0NsYXNzKGl0ZW0uZWxlbWVudCwgaXRlbS50YXJnZXRDbGFzcykpIHtcbiAgICAgICAgLy8gRGVhY3RpdmF0ZSBhbGwgYWN0aXZlIGdyb3VwIGVsZW1lbnRzLlxuICAgICAgICB1cGRhdGVDbGFzcyhpdGVtLmVsZW1lbnQsIGl0ZW0udGFyZ2V0cywgaXRlbS50YXJnZXRDbGFzcywgZmFsc2UsIGl0ZW0udGltZW91dClcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHVwZGF0ZUNsYXNzKHRvZ2dsZUl0ZW0uZWxlbWVudCwgdG9nZ2xlSXRlbS50YXJnZXRzLCB0b2dnbGVJdGVtLnRhcmdldENsYXNzLCBhY3RpdmF0ZSwgdG9nZ2xlSXRlbS50aW1lb3V0KVxufVxuXG4vLyBVcGRhdGUgdGhlIHRvZ2dsZSBjbGFzcyBmb3IgYWxsIGVsZW1lbnRzXG5jb25zdCB1cGRhdGVDbGFzcyA9IChlbGVtZW50LCB0YXJnZXRzLCB0YXJnZXRDbGFzcywgYWN0aXZlLCB0aW1lb3V0ID0gbnVsbCkgPT4ge1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGFjdGl2ZSA/ICd0cnVlJyA6ICdmYWxzZScpO1xuICBbZWxlbWVudCwgLi4udGFyZ2V0c10uZm9yRWFjaCh0YXJnZXQgPT4ge1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGFjdGl2YXRlKHRhcmdldCwgdGFyZ2V0Q2xhc3MsIHRpbWVvdXQpXG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYWN0aXZhdGUodGFyZ2V0LCB0YXJnZXRDbGFzcywgdGltZW91dClcbiAgICB9XG4gIH0pXG59XG5cbmNvbnN0IGFjdGl2YXRlID0gKGVsZW1lbnQsIHRhcmdldENsYXNzLCB0aW1lb3V0ID0gbnVsbCkgPT4ge1xuICBhZGRDbGFzcyhlbGVtZW50LCB0YXJnZXRDbGFzcylcbiAgaWYgKHRpbWVvdXQpIHtcbiAgICBhZGRDbGFzcyhlbGVtZW50LCAnYWN0aXZhdGUnKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ2FjdGl2YXRlJylcbiAgICB9LCB0aW1lb3V0KVxuICB9XG59XG5jb25zdCBkZWFjdGl2YXRlID0gKGVsZW1lbnQsIHRhcmdldENsYXNzLCB0aW1lb3V0ID0gbnVsbCkgPT4ge1xuICByZW1vdmVDbGFzcyhlbGVtZW50LCB0YXJnZXRDbGFzcylcbiAgaWYgKHRpbWVvdXQpIHtcbiAgICBhZGRDbGFzcyhlbGVtZW50LCAnZGVhY3RpdmF0ZScpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZW1vdmVDbGFzcyhlbGVtZW50LCAnZGVhY3RpdmF0ZScpXG4gICAgfSwgdGltZW91dClcbiAgfVxufVxuXG4vLyBBY3RpdmF0ZSAvIERlYWN0aXZhdGUgU3RpY2t5bmVzc1xuY29uc3QgYWN0aXZhdGVTdGlja3kgPSAoc3RpY2t5LCBhY3RpdmF0ZSA9IHRydWUpID0+IHtcbiAgc3RpY2t5LmFjdGl2ZSA9IGFjdGl2YXRlXG4gIGlmIChhY3RpdmF0ZSkge1xuICAgIHN0aWNreS5zcGFjZXIuc3R5bGUuaGVpZ2h0ID0gc3RpY2t5LnNob3dTcGFjZXIgPyBzdGlja3kuaGVpZ2h0ICsgJ3B4JyA6ICcnXG4gICAgYWRkQ2xhc3Moc3RpY2t5LmVsZW1lbnQsICdzdGlja3knKVxuICB9IGVsc2Uge1xuICAgIHN0aWNreS5zcGFjZXIuc3R5bGUuaGVpZ2h0ID0gJydcbiAgICByZW1vdmVDbGFzcyhzdGlja3kuZWxlbWVudCwgJ3N0aWNreScpXG4gIH1cbn1cbi8vIEFkZCBjbGFzcyB0byBlbGVtZW50XG5jb25zdCBhZGRDbGFzcyA9IChlbGVtZW50LCBjbGFzc05hbWUpID0+IHtcbiAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NOYW1lID8gZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoJyAnKSA6IFtdXG4gIGlmIChjbGFzc2VzLmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gLTEpIHtcbiAgICBjbGFzc2VzLnB1c2goY2xhc3NOYW1lKVxuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKCcgJylcbiAgfVxufVxuLy8gUmVtb3ZlIGNsYXNzIHRvIGVsZW1lbnRcbmNvbnN0IHJlbW92ZUNsYXNzID0gKGVsZW1lbnQsIGNsYXNzTmFtZSkgPT4ge1xuICBjb25zdCBjbGFzc2VzID0gZWxlbWVudC5jbGFzc05hbWUgPyBlbGVtZW50LmNsYXNzTmFtZS5zcGxpdCgnICcpIDogW11cbiAgY29uc3QgaW5kZXggPSBjbGFzc2VzLmluZGV4T2YoY2xhc3NOYW1lKVxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgY2xhc3Nlcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oJyAnKVxuICB9XG59XG4vLyBDaGVjayBpZiBlbGVtZW50IGhhcyBjbGFzc1xuY29uc3QgaGFzQ2xhc3MgPSAoZWxlbWVudCwgY2xhc3NOYW1lKSA9PiB7XG4gIGNvbnN0IGNsYXNzZXMgPSBlbGVtZW50LmNsYXNzTmFtZSA/IGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCcgJykgOiBbXVxuICByZXR1cm4gKGNsYXNzZXMuaW5kZXhPZihjbGFzc05hbWUpICE9PSAtMSlcbn1cblxuY29uc3QgZ2V0U2Nyb2xsUG9zaXRpb24gPSAoKSA9PiB7XG4gIGNvbnN0IGJvZHlUb3AgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcFxuICBjb25zdCBlbGVtZW50VG9wID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICBpZiAoYm9keVRvcCA+IGVsZW1lbnRUb3ApIHJldHVybiBib2R5VG9wXG4gIHJldHVybiBlbGVtZW50VG9wXG59XG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlc2l6ZSlcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbClcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgbWVudUluaXQpXG4iXX0="}