From aa9d969df0b2aae30d0d6158f41d66f6c797c9a1 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 5 Dec 2016 21:05:23 +0100 Subject: added clean start spage --- public/icons/mml-logo.png | Bin 0 -> 12508 bytes public/javascripts/bundle.js | 55 +++++++---- public/javascripts/main.js | 13 ++- public/stylesheets/style.css | 167 ++++++++++++++++++++++++++----- public/stylesheets/style_new.css | 205 --------------------------------------- routes/index.js | 10 +- views/index.jade | 42 +++----- views/layout.jade | 10 +- 8 files changed, 207 insertions(+), 295 deletions(-) create mode 100644 public/icons/mml-logo.png delete mode 100644 public/stylesheets/style_new.css diff --git a/public/icons/mml-logo.png b/public/icons/mml-logo.png new file mode 100644 index 0000000..fa5ae11 Binary files /dev/null and b/public/icons/mml-logo.png differ diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 3e02c13..9f64a6a 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -343,23 +343,23 @@ if (typeof exports !== 'undefined') { // Return all elements of `array` that have a fuzzy // match against `pattern`. fuzzy.simpleFilter = function(pattern, array) { - return array.filter(function(string) { - return fuzzy.test(pattern, string); + return array.filter(function(str) { + return fuzzy.test(pattern, str); }); }; -// Does `pattern` fuzzy match `string`? -fuzzy.test = function(pattern, string) { - return fuzzy.match(pattern, string) !== null; +// Does `pattern` fuzzy match `str`? +fuzzy.test = function(pattern, str) { + return fuzzy.match(pattern, str) !== null; }; -// If `pattern` matches `string`, wrap each matching character +// If `pattern` matches `str`, wrap each matching character // in `opts.pre` and `opts.post`. If no match, return null -fuzzy.match = function(pattern, string, opts) { +fuzzy.match = function(pattern, str, opts) { opts = opts || {}; var patternIdx = 0 , result = [] - , len = string.length + , len = str.length , totalScore = 0 , currScore = 0 // prefix @@ -368,15 +368,15 @@ fuzzy.match = function(pattern, string, opts) { , post = opts.post || '' // String to compare against. This might be a lowercase version of the // raw string - , compareString = opts.caseSensitive && string || string.toLowerCase() - , ch, compareChar; + , compareString = opts.caseSensitive && str || str.toLowerCase() + , ch; pattern = opts.caseSensitive && pattern || pattern.toLowerCase(); // For each character in the string, either add it to the result // or wrap in template if it's the next string in the pattern for(var idx = 0; idx < len; idx++) { - ch = string[idx]; + ch = str[idx]; if(compareString[idx] === pattern[patternIdx]) { ch = pre + ch + post; patternIdx += 1; @@ -392,6 +392,8 @@ fuzzy.match = function(pattern, string, opts) { // return rendered string if we have a match for every char if(patternIdx === pattern.length) { + // if the string is an exact match with pattern, totalScore should be maxed + totalScore = (compareString === pattern) ? Infinity : totalScore; return {rendered: result.join(''), score: totalScore}; } @@ -423,6 +425,12 @@ fuzzy.match = function(pattern, string, opts) { // , extract: function(arg) { return arg.crying; } // } fuzzy.filter = function(pattern, arr, opts) { + if(!arr || arr.length === 0) { + return []; + } + if (typeof pattern !== 'string') { + return arr; + } opts = opts || {}; return arr .reduce(function(prev, element, idx, arr) { @@ -457,6 +465,11 @@ fuzzy.filter = function(pattern, arr, opts) { },{}],4:[function(require,module,exports){ +/* This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://www.wtfpl.net/ for more details. */ 'use strict'; module.exports = leftPad; @@ -492,7 +505,7 @@ function leftPad (str, len, ch) { while (true) { // add `ch` to `pad` if `len` is odd if (len & 1) pad += ch; - // devide `len` by 2, ditch the fraction + // divide `len` by 2, ditch the remainder len >>= 1; // "double" the `ch` so this operation count grows logarithmically on `len` // each time `ch` is "doubled", the `len` would need to be "doubled" too @@ -560,8 +573,6 @@ var sinterklaas = function sinterklaas() { window.location.href = 'https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30'; } }); - - // inputNode.placeholder = 'Hoor wie klopt daar kind\'ren' }; module.exports = { sinterklaas: sinterklaas }; @@ -618,7 +629,7 @@ module.exports = getWeek; },{}],8:[function(require,module,exports){ 'use strict'; -/* global ga */ +/* global ga FLAGS */ require('flexibility'); @@ -638,8 +649,7 @@ var nextButton = document.querySelectorAll('input[type="button"]')[1]; var currentWeekNode = document.querySelector('.current'); var favNode = document.querySelector('.fav'); -if (!(window.location.href.split('?')[1] && window.location.href.split('?')[1].indexOf('nfd') >= 0)) { - // nfd = no feature detection +if (FLAGS.indexOf('NO_FEATURE_DETECT') === -1) { if (document.querySelector('#schedule').getClientRects()[0].bottom !== document.body.getClientRects()[0].bottom) { window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; } else { @@ -726,6 +736,7 @@ searchNode.addEventListener('keydown', function (e) { }); searchNode.addEventListener('input', function (e) { + searchNode.className = ''; autocompleteNode.innerHTML = ''; if (inputNode.value.trim() === '') return; @@ -831,7 +842,6 @@ var currentFav = getCurrentFav(); if (currentFav) { (function () { selectedUser = currentFav; - // console.log('not updating value') inputNode.value = selectedUser.value; scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); updateFavNode(); @@ -857,9 +867,14 @@ if (currentFav) { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction: eventAction, eventLabel: eventLabel }); }); })(); +} else if (inputNode.value === '') { + searchNode.className = 'no-input'; + inputNode.focus(); } -easterEggs.sinterklaas(); +document.body.style = ''; + +window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUVBLFFBQUksb0JBQUo7QUFDQSxZQUFRLGFBQWEsSUFBckI7QUFDRSxXQUFLLEdBQUw7QUFDRSxzQkFBYyxPQUFkO0FBQ0E7QUFDRixXQUFLLEdBQUw7QUFDRSxzQkFBYyxTQUFkO0FBQ0E7QUFDRixXQUFLLEdBQUw7QUFDRSxzQkFBYyxNQUFkO0FBQ0E7QUFDRixXQUFLLEdBQUw7QUFDRSxzQkFBYyxTQUFkO0FBQ0E7QUFaSjtBQWNBLFFBQU0sYUFBYSxhQUFhLEtBQWhDOztBQUVBLE9BQUcsWUFBWTtBQUNiLFNBQUcsTUFBSCxFQUFXLEVBQUUsU0FBUyxPQUFYLEVBQW9CLGVBQWUsWUFBbkMsRUFBaUQsd0JBQWpELEVBQThELHNCQUE5RCxFQUFYO0FBQ0QsS0FGRDtBQXhCYztBQTJCZjs7QUFFRCxXQUFXLFdBQVgiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyaW5nKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyaW5nYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cmluZykgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyaW5nYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHJpbmcsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHJpbmcgfHwgc3RyaW5nLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoLCBjb21wYXJlQ2hhcjtcblxuICBwYXR0ZXJuID0gb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHBhdHRlcm4gfHwgcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBlaXRoZXIgYWRkIGl0IHRvIHRoZSByZXN1bHRcbiAgLy8gb3Igd3JhcCBpbiB0ZW1wbGF0ZSBpZiBpdCdzIHRoZSBuZXh0IHN0cmluZyBpbiB0aGUgcGF0dGVyblxuICBmb3IodmFyIGlkeCA9IDA7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjaCA9IHN0cmluZ1tpZHhdO1xuICAgIGlmKGNvbXBhcmVTdHJpbmdbaWR4XSA9PT0gcGF0dGVybltwYXR0ZXJuSWR4XSkge1xuICAgICAgY2ggPSBwcmUgKyBjaCArIHBvc3Q7XG4gICAgICBwYXR0ZXJuSWR4ICs9IDE7XG5cbiAgICAgIC8vIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgc2hvdWxkIGluY3JlYXNlIHRoZSBzY29yZSBtb3JlIHRoYW4gbGluZWFybHlcbiAgICAgIGN1cnJTY29yZSArPSAxICsgY3VyclNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyU2NvcmUgPSAwO1xuICAgIH1cbiAgICB0b3RhbFNjb3JlICs9IGN1cnJTY29yZTtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjaDtcbiAgfVxuXG4gIC8vIHJldHVybiByZW5kZXJlZCBzdHJpbmcgaWYgd2UgaGF2ZSBhIG1hdGNoIGZvciBldmVyeSBjaGFyXG4gIGlmKHBhdHRlcm5JZHggPT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHJldHVybiBhcnJcbiAgICAucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGVsZW1lbnQsIGlkeCwgYXJyKSB7XG4gICAgICB2YXIgc3RyID0gZWxlbWVudDtcbiAgICAgIGlmKG9wdHMuZXh0cmFjdCkge1xuICAgICAgICBzdHIgPSBvcHRzLmV4dHJhY3QoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVuZGVyZWQgPSBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIsIG9wdHMpO1xuICAgICAgaWYocmVuZGVyZWQgIT0gbnVsbCkge1xuICAgICAgICBwcmV2W3ByZXYubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIHN0cmluZzogcmVuZGVyZWQucmVuZGVyZWRcbiAgICAgICAgICAsIHNjb3JlOiByZW5kZXJlZC5zY29yZVxuICAgICAgICAgICwgaW5kZXg6IGlkeFxuICAgICAgICAgICwgb3JpZ2luYWw6IGVsZW1lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIFtdKVxuXG4gICAgLy8gU29ydCBieSBzY29yZS4gQnJvd3NlcnMgYXJlIGluY29uc2lzdGVudCB3cnQgc3RhYmxlL3Vuc3RhYmxlXG4gICAgLy8gc29ydGluZywgc28gZm9yY2Ugc3RhYmxlIGJ5IHVzaW5nIHRoZSBpbmRleCBpbiB0aGUgY2FzZSBvZiB0aWUuXG4gICAgLy8gU2VlIGh0dHA6Ly9vZmIubmV0L35zZXRobWwvaXMtc29ydC1zdGFibGUuaHRtbFxuICAgIC5zb3J0KGZ1bmN0aW9uKGEsYikge1xuICAgICAgdmFyIGNvbXBhcmUgPSBiLnNjb3JlIC0gYS5zY29yZTtcbiAgICAgIGlmKGNvbXBhcmUpIHJldHVybiBjb21wYXJlO1xuICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH0pO1xufTtcblxuXG59KCkpO1xuXG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGV2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSBmcmFjdGlvblxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG5cbiAgLy8gaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ0hvb3Igd2llIGtsb3B0IGRhYXIga2luZFxcJ3Jlbidcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHNpbnRlcmtsYWFzIH1cbiIsInZhciBsZWZ0UGFkID0gcmVxdWlyZSgnbGVmdC1wYWQnKVxudmFyIGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuXG5mdW5jdGlvbiBnZXRVUkxPZlVzZXJzICh3ZWVrT2Zmc2V0LCB0eXBlLCBpZCkge1xuICByZXR1cm4gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vbWVldGluZ3BvaW50UHJveHkvUm9vc3RlcnMtQUwlMkZkb2MlMkZkYWdyb29zdGVycyUyRmAgK1xuICAgICAgYCR7KGdldFdlZWsoKSArIHdlZWtPZmZzZXQpfSUyRiR7dHlwZX0lMkYke3R5cGV9JHtsZWZ0UGFkKGlkLCA1LCAnMCcpfS5odG1gXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VVJMT2ZVc2Vyc1xuIiwiLy8gY29waWVkIGZyb20gaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jL2RhZ3Jvb3N0ZXJzL3VudGlzc2NyaXB0cy5qcyxcbi8vIHdlcmUgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyB0aGV5IGRvIHRvIGJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lXG4vLyB3ZWVrIG51bWJlci5cbmZ1bmN0aW9uIGdldFdlZWsgKCkge1xuICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgZGF0ZSBvYmplY3RcbiAgY29uc3QgdGFyZ2V0ID0gbmV3IERhdGUoKVxuXG4gIC8vIElTTyB3ZWVrIGRhdGUgd2Vla3Mgc3RhcnQgb24gbW9uZGF5XG4gIC8vIHNvIGNvcnJlY3QgdGhlIGRheSBudW1iZXJcbiAgY29uc3QgZGF5TnIgPSAodGFyZ2V0LmdldERheSgpICsgNikgJSA3XG5cbiAgLy8gSVNPIDg2MDEgc3RhdGVzIHRoYXQgd2VlayAxIGlzIHRoZSB3ZWVrXG4gIC8vIHdpdGggdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoYXQgeWVhci5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgZGF0ZSB0byB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHRhcmdldC5zZXREYXRlKHRhcmdldC5nZXREYXRlKCkgLSBkYXlOciArIDMpXG5cbiAgLy8gU3RvcmUgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIG9mIHRoZSB0YXJnZXQgZGF0ZVxuICBjb25zdCBmaXJzdFRodXJzZGF5ID0gdGFyZ2V0LnZhbHVlT2YoKVxuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IHRvIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhclxuICAvLyBGaXJzdCBzZXQgdGhlIHRhcmdldCB0byBqYW51YXJ5IGZpcnN0XG4gIHRhcmdldC5zZXRNb250aCgwLCAxKVxuICAvLyBOb3QgYSB0aHVyc2RheT8gQ29ycmVjdCB0aGUgZGF0ZSB0byB0aGUgbmV4dCB0aHVyc2RheVxuICBpZiAodGFyZ2V0LmdldERheSgpICE9PSA0KSB7XG4gICAgdGFyZ2V0LnNldE1vbnRoKDAsIDEgKyAoKDQgLSB0YXJnZXQuZ2V0RGF5KCkpICsgNykgJSA3KVxuICB9XG5cbiAgLy8gVGhlIHdlZWtudW1iZXIgaXMgdGhlIG51bWJlciBvZiB3ZWVrcyBiZXR3ZWVuIHRoZVxuICAvLyBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhciBhbmQgdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICByZXR1cm4gMSArIE1hdGguY2VpbCgoZmlyc3RUaHVyc2RheSAtIHRhcmdldCkgLyA2MDQ4MDAwMDApIC8vIDYwNDgwMDAwMCA9IDcgKiAyNCAqIDM2MDAgKiAxMDAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0V2Vla1xuIiwiLyogZ2xvYmFsIGdhICovXG5cbnJlcXVpcmUoJ2ZsZXhpYmlsaXR5JylcblxuY29uc3QgZnV6enkgPSByZXF1aXJlKCdmdXp6eScpXG4vLyBjb25zdCBnZXRVc2VycyA9IHJlcXVpcmUoJy4vZ2V0VXNlcnMnKVxuY29uc3QgZ2V0VVJMT2ZVc2VyID0gcmVxdWlyZSgnLi9nZXRVUkxPZlVzZXInKVxuY29uc3QgcmVtb3ZlRGlhY3JpdGljcyA9IHJlcXVpcmUoJ2RpYWNyaXRpY3MnKS5yZW1vdmVcbmNvbnN0IGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuY29uc3QgZWFzdGVyRWdncyA9IHJlcXVpcmUoJy4vZWFzdGVyRWdncycpXG5cbmNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbmNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJidXR0b25cIl0nKVswXVxuY29uc3QgbmV4dEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJidXR0b25cIl0nKVsxXVxuY29uc3QgY3VycmVudFdlZWtOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmN1cnJlbnQnKVxuY29uc3QgZmF2Tm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mYXYnKVxuXG5pZiAoISh3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpWzFdICYmXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKVsxXS5pbmRleE9mKCduZmQnKSA+PSAwKSkgeyAvLyBuZmQgPSBubyBmZWF0dXJlIGRldGVjdGlvblxuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0VXNlcnMgKCkge1xuICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkYXRhJylcbiAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRhdGEtdXNlcicpXG4gIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobm9kZXMpXG4gIGNvbnN0IHVzZXJzID0gZWxlbWVudHMubWFwKHVzZXJOb2RlID0+IHtcbiAgICBjb25zdCB0eXBlID0gdXNlck5vZGUucXVlcnlTZWxlY3RvcignLmRhdGEtdHlwZScpLnRleHRDb250ZW50XG4gICAgY29uc3QgdmFsdWUgPSB1c2VyTm9kZS5xdWVyeVNlbGVjdG9yKCcuZGF0YS12YWx1ZScpLnRleHRDb250ZW50XG4gICAgY29uc3QgaW5kZXggPSBOdW1iZXIodXNlck5vZGUucXVlcnlTZWxlY3RvcignLmRhdGEtaW5kZXgnKS50ZXh0Q29udGVudClcbiAgICByZXR1cm4geyB0eXBlLCB2YWx1ZSwgaW5kZXggfVxuICB9KVxuXG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkYXRhJykub3V0ZXJIVE1MID0gJydcblxuICByZXR1cm4gdXNlcnNcbn1cblxuY29uc3QgdXNlcnMgPSBnZXRVc2VycygpXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IHVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCB1c2Vycywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IHVzZXJzW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgaWYgKCFpc1NhZmFyaSkge1xuICAgIGlucHV0Tm9kZS5zZWxlY3Rpb25TdGFydCA9IGlucHV0Tm9kZS5zZWxlY3Rpb25FbmQgPSAtMVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICAvLyBjb25zb2xlLmxvZygnbm90IHVwZGF0aW5nIHZhbHVlJylcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuZWFzdGVyRWdncy5zaW50ZXJrbGFhcygpXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0Usc0JBQWMsT0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsTUFBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxRQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxPQUFHLFlBQVk7QUFDYixTQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFlBQW5DLEVBQWlELHdCQUFqRCxFQUE4RCxzQkFBOUQsRUFBWDtBQUNELEtBRkQ7QUF2QmM7QUEwQmYsQ0ExQkQsTUEwQk8sSUFBSSxVQUFVLEtBQVYsS0FBb0IsRUFBeEIsRUFBNEI7QUFDakMsYUFBVyxTQUFYLEdBQXVCLFVBQXZCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULENBQWMsS0FBZCxHQUFzQixFQUF0Qjs7QUFFQSxPQUFPLFVBQVAsR0FBb0IsVUFBcEIiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0VXNlcnMgKCkge1xuICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkYXRhJylcbiAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRhdGEtdXNlcicpXG4gIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobm9kZXMpXG4gIGNvbnN0IHVzZXJzID0gZWxlbWVudHMubWFwKHVzZXJOb2RlID0+IHtcbiAgICBjb25zdCB0eXBlID0gdXNlck5vZGUucXVlcnlTZWxlY3RvcignLmRhdGEtdHlwZScpLnRleHRDb250ZW50XG4gICAgY29uc3QgdmFsdWUgPSB1c2VyTm9kZS5xdWVyeVNlbGVjdG9yKCcuZGF0YS12YWx1ZScpLnRleHRDb250ZW50XG4gICAgY29uc3QgaW5kZXggPSBOdW1iZXIodXNlck5vZGUucXVlcnlTZWxlY3RvcignLmRhdGEtaW5kZXgnKS50ZXh0Q29udGVudClcbiAgICByZXR1cm4geyB0eXBlLCB2YWx1ZSwgaW5kZXggfVxuICB9KVxuXG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkYXRhJykub3V0ZXJIVE1MID0gJydcblxuICByZXR1cm4gdXNlcnNcbn1cblxuY29uc3QgdXNlcnMgPSBnZXRVc2VycygpXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IHVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7XG4gIHNlYXJjaE5vZGUuY2xhc3NOYW1lID0gJydcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIHVzZXJzLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gdXNlcnNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGlzU2FmYXJpID0gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KVxuICBpZiAoIWlzU2FmYXJpKSB7XG4gICAgaW5wdXROb2RlLnNlbGVjdGlvblN0YXJ0ID0gaW5wdXROb2RlLnNlbGVjdGlvbkVuZCA9IC0xXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgc2VhcmNoTm9kZS5jbGFzc05hbWUgPSAnbm8taW5wdXQnXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUgPSAnJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== diff --git a/public/javascripts/main.js b/public/javascripts/main.js index b4c8f89..31645e8 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -1,4 +1,4 @@ -/* global ga */ +/* global ga FLAGS */ require('flexibility') @@ -18,8 +18,7 @@ const nextButton = document.querySelectorAll('input[type="button"]')[1] const currentWeekNode = document.querySelector('.current') const favNode = document.querySelector('.fav') -if (!(window.location.href.split('?')[1] && - window.location.href.split('?')[1].indexOf('nfd') >= 0)) { // nfd = no feature detection +if (FLAGS.indexOf('NO_FEATURE_DETECT') === -1) { if (document.querySelector('#schedule').getClientRects()[0].bottom !== document.body.getClientRects()[0].bottom) { window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/' @@ -108,6 +107,7 @@ searchNode.addEventListener('keydown', function (e) { }) searchNode.addEventListener('input', function (e) { + searchNode.className = '' autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return @@ -234,6 +234,11 @@ if (currentFav) { ga(function () { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction, eventLabel }) }) +} else if (inputNode.value === '') { + searchNode.className = 'no-input' + inputNode.focus() } -easterEggs.sinterklaas() +document.body.style = '' + +window.easterEggs = easterEggs diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 95944e0..b572823 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -40,33 +40,65 @@ html, body { #search .input-wrapper { position: relative; flex-grow: 1; + color: #FFFFFF; } #search input[type='text'] { display: block; - background-color: #D32F2F; - color: #FFFFFF; + background-color: #f6695e; + color: inherit; + border-radius: 2px; width: 100%; display: block; outline: none; border: 0; padding: 16px; font-size: 1.1em; + transition: box-shadow 200ms ease-in-out; } -::-webkit-input-placeholder { /* WebKit, Blink, Edge */ - color: #FFCDD2; +#search input[type='text']:focus { + background-color: #FFFFFF; + color: #212121; + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } -:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ - color: #FFCDD2; - opacity: 1; + +#search input[type='text']:focus + button { + color: #212121; +} + +/* WebKit, Blink, Edge */ +input::-webkit-input-placeholder { + color: #FFCDD2; } -::-moz-placeholder { /* Mozilla Firefox 19+ */ - color: #FFCDD2; - opacity: 1; +input:focus::-webkit-input-placeholder { + color: #757575; +} + +/* Mozilla Firefox 4 to 18 */ +input:-moz-placeholder { + color: #FFCDD2; + opacity: 1; +} +input:focus:-moz-placeholder { + color: #757575; +} + +/* Mozilla Firefox 19+ */ +input::-moz-placeholder { + color: #FFCDD2; + opacity: 1; +} +input:focus::-moz-placeholder { + color: #757575; +} + +/* Internet Explorer 10-11 */ +input:-ms-input-placeholder { + color: #FFCDD2; } -:-ms-input-placeholder { /* Internet Explorer 10-11 */ - color: #FFCDD2; +input:focus:-ms-input-placeholder { + color: #757575; } li:hover { @@ -127,19 +159,13 @@ li:hover { } #week-selector input[type='button'] { - background: #D32F2F; + background: inherit; color: white; border: 0px; padding: 5px 10px; border-radius: 2px; } -/*input:hover,*/ -input:focus { - outline: none; - background-color: #b71c1c !important; -} - input { -webkit-appearance: none; } @@ -147,19 +173,26 @@ input { #search .fav { position: absolute; font-size: 1.8em; - color: #FFCDD2; - right: 12.5px; - top: 12.5px; + color: inherit; + right: 8.5px; + top: 8.5px; border: 0; - padding: 0; + padding: 4px; + border-radius: 2px; background: none; } +#week-selector input[type='button']:focus, #search #overflow-button:focus, #search .fav:focus { + outline: none; + background-color: #D32F2F; +} + #search #overflow-button { background: none; border: none; padding: 3px 9px; color: white; + border-radius: 2px; } .hidden { @@ -170,3 +203,91 @@ ul a { color: inherit; text-decoration: none; } + +#search .title { + display: none; +} + +#search.no-input { + height: 100%; + background-color: #ececec; +} + +#search.no-input button { + display: none; +} + +#search.no-input #overflow-button { + position: absolute; + display: block; + top: 0; + right: 0; + color: #757575; +} + +#search.no-input .print-page { + display: none; +} + +#search.no-input #overflow-button:focus { + background-color: inherit; + color: #212121; +} + +#search.no-input .logo { + background-image: url(/icons/mml-logo.png); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + height: 100px; + width: 100px; + + /* virtual center: http://javier.xyz/visual-center/ */ + transform: translate(-8%,-3%); + margin: 0 auto; +} + +#search.no-input .title { + display: block; + font-size: 55px; + width: 580px; + padding-bottom: 32px; +} + +#search.no-input .title .text { + text-align: center; + line-height: 55px; +} + +#search.no-input .top-bar { + position: static; + display: block; + margin-top: 50vh; + transform: translateY(-75%); +} + +#search.no-input input[type='text'] { + background-color: #FFF; +} + +/* WebKit, Blink, Edge */ +#search.no-input input::-webkit-input-placeholder { + color: #757575; +} + +/* Mozilla Firefox 4 to 18 */ +#search.no-input input:-moz-placeholder { + color: #757575; + opacity: 1; +} + +/* Mozilla Firefox 19+ */ +#search.no-input input::-moz-placeholder { + color: #757575; + opacity: 1; +} + +/* Internet Explorer 10-11 */ +#search.no-input input:-ms-input-placeholder { + color: #757575; +} \ No newline at end of file diff --git a/public/stylesheets/style_new.css b/public/stylesheets/style_new.css deleted file mode 100644 index f6c6b25..0000000 --- a/public/stylesheets/style_new.css +++ /dev/null @@ -1,205 +0,0 @@ -* { - box-sizing: border-box; -} - -html, body { - margin: 0; - font-family: 'Roboto', sans-serif; - display: flex; - -js-display: flex; - flex-direction: column; - width: 100vw; - height: 100vh; -} - -.other { - color: gray; - font-style: italic; - margin-left: 5px; -} - -#search { - z-index: 2; - background-color: #F44336; - margin: 0 auto; - width: 100%; - position: absolute; - /*box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);*/ - /*box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);*/ - box-shadow: 0 0.5px 1.5px rgba(0,0,0,0.06), 0 0.5px 1px rgba(0,0,0,0.12); -} - -#search .top-bar { - position: relative; - margin: 0 auto; - max-width: 600px; - padding: 10px; - display: flex; -} - -#search .input-wrapper { - position: relative; - flex-grow: 1; - color: #FFFFFF; -} - -#search input[type='text'] { - display: block; - background-color: #f6695e; - color: inherit; - border-radius: 2px; - width: 100%; - display: block; - outline: none; - border: 0; - padding: 16px; - font-size: 1.1em; - transition: box-shadow 200ms ease-in-out; -} - -#search input[type='text']:focus { - background-color: #FFFFFF; - color: #212121; - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); -} - -#search input[type='text']:focus + button { - color: #212121; -} - -/* WebKit, Blink, Edge */ -input::-webkit-input-placeholder { - color: #FFCDD2; -} -input:focus::-webkit-input-placeholder { - color: #757575; -} - -/* Mozilla Firefox 4 to 18 */ -input:-moz-placeholder { - color: #FFCDD2; - opacity: 1; -} -input:focus:-moz-placeholder { - color: #757575; -} - -/* Mozilla Firefox 19+ */ -input::-moz-placeholder { - color: #FFCDD2; - opacity: 1; -} -input:focus::-moz-placeholder { - color: #757575; -} - -/* Internet Explorer 10-11 */ -input:-ms-input-placeholder { - color: #FFCDD2; -} -input:focus:-ms-input-placeholder { - color: #757575; -} - -li:hover { - background-color: lightgray; - cursor: pointer; -} - -.selected { - background-color: lightgray; -} - -#schedule { - flex-grow: 1; - width: 100vw; - border: 0; - padding: 0; -} - -#search-space-filler { - height: 73px; -} - -.autocomplete-wrapper { - background-color: white; -} - -.autocomplete { - max-width: 600px; - margin: 0 auto; - padding: 0; -} - -.autocomplete li { - list-style: none; - padding: 10px; -} - -#week-selector { - z-index: 1; - background-color: #F44336; - box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); - color: white; -} - -#week-selector .week-wrapper { - max-width: 600px; - padding: 10px !important; - margin: 0 auto; - display: flex; - -js-display: flex; - padding: 10px 0; -} - -#week-selector .current { - flex-grow: 1; - text-align: center; - padding: 5px; -} - -#week-selector input[type='button'] { - background: inherit; - color: white; - border: 0px; - padding: 5px 10px; - border-radius: 2px; -} - -input { - -webkit-appearance: none; -} - -#search .fav { - position: absolute; - font-size: 1.8em; - color: inherit; - right: 8.5px; - top: 8.5px; - border: 0; - padding: 4px; - border-radius: 2px; - background: none; -} - -#week-selector input[type='button']:focus, #search #overflow-button:focus, #search .fav:focus { - outline: none; - background-color: #D32F2F; -} - -#search #overflow-button { - background: none; - border: none; - padding: 3px 9px; - color: white; - border-radius: 2px; -} - -.hidden { - display: none !important; -} - -ul a { - color: inherit; - text-decoration: none; -} diff --git a/routes/index.js b/routes/index.js index 07192b7..bc0a936 100644 --- a/routes/index.js +++ b/routes/index.js @@ -4,11 +4,13 @@ const users = require('../lib/getUserIndex') /* GET home page. */ router.get('/', function (req, res, next) { - if (req.query.v === 'n') { - res.render('index', { version: 'new', users: users.users }) - } else { - res.render('index', { version: 'old', users: users.users }) + let flags = [] + if (req.query.nfd != null) { + flags.push('NO_FEATURE_DETECT') } + + const flagsStr = `var FLAGS = [${flags.map(flag => `"${flag}"`).toString(', ')}];` + res.render('index', { flagsStr, users: users.users }) }) module.exports = router diff --git a/views/index.jade b/views/index.jade index c496bc0..de089e1 100644 --- a/views/index.jade +++ b/views/index.jade @@ -1,27 +1,7 @@ extends layout -block head_top - script. - function utmx_section(){}function utmx(){}(function(){var - k='129149775-1',d=document,l=d.location,c=d.cookie; - if(l.search.indexOf('utm_expid='+k)>0)return; - function f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c. - indexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c. - length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write( - '<\/sc'+'ript>')})(); - script. - utmx('url','A/B'); - - block head - if version == 'new' - link(rel='stylesheet', href='/stylesheets/style_new.css') - else - link(rel='stylesheet', href='/stylesheets/style.css') + link(rel='stylesheet', href='/stylesheets/style.css') link(rel='stylesheet', href='/stylesheets/print.css', media='print') link(rel='stylesheet', href='https://fonts.googleapis.com/icon?family=Material+Icons') link(rel='stylesheet', href='https://code.getmdl.io/1.2.1/material.indigo-pink.min.css') @@ -39,6 +19,9 @@ block content form#search .top-bar + .title + .logo + .text Rooster .input-wrapper input(type='text', placeholder='Zoeken') button.material-icons.fav(tabindex='0', type='button')  @@ -48,7 +31,7 @@ block content ul.mdl-menu.mdl-menu--bottom-right.mdl-js-menu.mdl-js-ripple-effect(for='overflow-button') a(href='http://www.meetingpointmco.nl/Roosters-AL/doc/') li.mdl-menu__item Oud rooster gebruiken - a(href='javascript:window.print()') + a(href='javascript:window.print()').print-page li.mdl-menu__item.mdl-menu__item--full-bleed-divider#print-page Pagina printen li.mdl-menu__item(disabled) Gemaakt door Noah Loomans .autocomplete-wrapper @@ -56,16 +39,13 @@ block content #week-selector #search-space-filler .week-wrapper - if version == 'new' - input(type='button', value='arrow_back').material-icons - span.current Loading... - input(type='button', value='arrow_forward').material-icons - else - input(type='button', value='Vorige') - span.current Loading... - input(type='button', value='Volgende') + input(type='button', value='arrow_back').material-icons + span.current Loading... + input(type='button', value='arrow_forward').material-icons - iframe(src='/hello', scrolling='no')#schedule + iframe(scrolling='no')#schedule block scripts + script. + !{flagsStr} script(src='/javascripts/bundle.js') diff --git a/views/layout.jade b/views/layout.jade index 10aa433..f7c47e0 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -9,14 +9,8 @@ html link(rel='manifest', href='/manifest.webmanifest') script(src='//d2wy8f7a9ursnm.cloudfront.net/bugsnag-3.min.js', data-apikey='bd5c41bb376798642d7ae4701a09a8fb') block head - body + body(style='opacity: 0;') block content script. - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); - - ga('create', 'UA-83684754-1', 'auto'); - ga('send', 'pageview'); + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');ga('create', 'UA-83684754-1', 'auto');ga('send', 'pageview'); block scripts -- cgit v1.1 From 0c8b852ba47713a1508734de1fc5c871bf6ad0a3 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 5 Dec 2016 21:06:28 +0100 Subject: fixed page too big on mobile --- public/stylesheets/style.css | 1 - 1 file changed, 1 deletion(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index b572823..7ac665f 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -250,7 +250,6 @@ ul a { #search.no-input .title { display: block; font-size: 55px; - width: 580px; padding-bottom: 32px; } -- cgit v1.1 From 9d94ae11c13d8bcff23eac725c2d7bae2a7872a9 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 5 Dec 2016 21:35:01 +0100 Subject: fixed strict mode --- routes/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routes/index.js b/routes/index.js index bc0a936..8b31ad5 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,3 +1,5 @@ +'use strict' + const express = require('express') const router = express.Router() const users = require('../lib/getUserIndex') -- cgit v1.1 From 863d43f5038cd3b660c2f5160cd56124fa09427b Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Dec 2016 15:25:53 +0100 Subject: improved build system --- gulpfile.js | 14 -------------- package.json | 13 ++++--------- 2 files changed, 4 insertions(+), 23 deletions(-) delete mode 100644 gulpfile.js diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index bb38213..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,14 +0,0 @@ -const gulp = require('gulp') -const fs = require('fs') -const browserify = require('browserify') - -gulp.task('scripts', function () { - browserify({ entries: './public/javascripts/main.js', debug: true }) - .transform('babelify', {presets: ['es2015']}) - .bundle() - .pipe(fs.createWriteStream('./public/javascripts/bundle.js')) -}) - -gulp.task('scripts:watch', function () { - return gulp.watch(['./public/javascripts/**/*.js', '!./public/javascripts/bundle.js'], ['scripts']) -}) diff --git a/package.json b/package.json index c831f7c..2fa3650 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "private": true, "scripts": { "start": "node ./bin/www", - "setup": "npm install && bower install" + "setup": "npm install && bower install", + "build-dev": "browserify -d -t [ babelify --presets [ es2015 ] ] -e ./public/javascripts/main.js > ./public/javascripts/bundle.js", + "build": "browserify -t [ babelify --presets [ es2015 ] ] -e ./public/javascripts/bundle.js | uglifyjs > ./public/javascripts/bundle.js" }, "dependencies": { "bluebird": "^3.4.6", @@ -31,14 +33,7 @@ "babelify": "^7.3.0", "bower": "^1.7.9", "browserify": "^13.1.0", - "gulp": "^3.9.1", - "gulp-babel": "^6.1.2", - "gulp-browserify": "^0.5.1", - "vinyl-source-stream": "^1.1.0" - }, - "engine": { - "node": "*", - "npm": "*" + "gulp": "^3.9.1" }, "author": "Noah Loomans ", "license": "MIT", -- cgit v1.1 From 309781965eb9fbc6e035bbe7a774f2a90f021c52 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Dec 2016 16:14:27 +0100 Subject: optimized file size --- package.json | 2 +- public/javascripts/bundle.js | 881 +------------------------------------------ public/javascripts/main.js | 26 +- routes/index.js | 5 +- views/index.jade | 11 +- views/layout.jade | 1 - 6 files changed, 10 insertions(+), 916 deletions(-) diff --git a/package.json b/package.json index 2fa3650..7ad833f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "start": "node ./bin/www", "setup": "npm install && bower install", "build-dev": "browserify -d -t [ babelify --presets [ es2015 ] ] -e ./public/javascripts/main.js > ./public/javascripts/bundle.js", - "build": "browserify -t [ babelify --presets [ es2015 ] ] -e ./public/javascripts/bundle.js | uglifyjs > ./public/javascripts/bundle.js" + "build": "browserify -t [ babelify --presets [ es2015 ] ] -e ./public/javascripts/main.js | uglifyjs -cm > ./public/javascripts/bundle.js" }, "dependencies": { "bluebird": "^3.4.6", diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 9f64a6a..e899a20 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -1,880 +1 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1&&"flex-start"===e.style.alignContent)for(t=0;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;l=e.lines[++n];)l.crossStart=t,t+=l.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;l=e.lines[++n];)l.crossStart=t,t+=l.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;l=e.lines[++n];)l.crossStart=t,l.cross+=r,t+=l.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var l=child.style.alignSelf;"auto"===l&&(l=e.style.alignItems),"flex-start"===l?child.flexStyle.crossStart=line.crossStart:"flex-end"===l?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===l?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function l(e,l){var t="row"===l||"row-reverse"===l,r=e.mainAxis;if(r){var n=t&&"inline"===r||!t&&"block"===r;n||(e.flexStyle={main:e.flexStyle.cross,cross:e.flexStyle.main,mainOffset:e.flexStyle.crossOffset,crossOffset:e.flexStyle.mainOffset,mainBefore:e.flexStyle.crossBefore,mainAfter:e.flexStyle.crossAfter,crossBefore:e.flexStyle.mainBefore,crossAfter:e.flexStyle.mainAfter,mainInnerBefore:e.flexStyle.crossInnerBefore,mainInnerAfter:e.flexStyle.crossInnerAfter,crossInnerBefore:e.flexStyle.mainInnerBefore,crossInnerAfter:e.flexStyle.mainInnerAfter,mainBorderBefore:e.flexStyle.crossBorderBefore,mainBorderAfter:e.flexStyle.crossBorderAfter,crossBorderBefore:e.flexStyle.mainBorderBefore,crossBorderAfter:e.flexStyle.mainBorderAfter})}else t?e.flexStyle={main:e.style.width,cross:e.style.height,mainOffset:e.style.offsetWidth,crossOffset:e.style.offsetHeight,mainBefore:e.style.marginLeft,mainAfter:e.style.marginRight,crossBefore:e.style.marginTop,crossAfter:e.style.marginBottom,mainInnerBefore:e.style.paddingLeft,mainInnerAfter:e.style.paddingRight,crossInnerBefore:e.style.paddingTop,crossInnerAfter:e.style.paddingBottom,mainBorderBefore:e.style.borderLeftWidth,mainBorderAfter:e.style.borderRightWidth,crossBorderBefore:e.style.borderTopWidth,crossBorderAfter:e.style.borderBottomWidth}:e.flexStyle={main:e.style.height,cross:e.style.width,mainOffset:e.style.offsetHeight,crossOffset:e.style.offsetWidth,mainBefore:e.style.marginTop,mainAfter:e.style.marginBottom,crossBefore:e.style.marginLeft,crossAfter:e.style.marginRight,mainInnerBefore:e.style.paddingTop,mainInnerAfter:e.style.paddingBottom,crossInnerBefore:e.style.paddingLeft,crossInnerAfter:e.style.paddingRight,mainBorderBefore:e.style.borderTopWidth,mainBorderAfter:e.style.borderBottomWidth,crossBorderBefore:e.style.borderLeftWidth,crossBorderAfter:e.style.borderRightWidth},"content-box"===e.style.boxSizing&&("number"==typeof e.flexStyle.main&&(e.flexStyle.main+=e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter),"number"==typeof e.flexStyle.cross&&(e.flexStyle.cross+=e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter));e.mainAxis=t?"inline":"block",e.crossAxis=t?"block":"inline","number"==typeof e.style.flexBasis&&(e.flexStyle.main=e.style.flexBasis+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter),e.flexStyle.mainOuter=e.flexStyle.main,e.flexStyle.crossOuter=e.flexStyle.cross,"auto"===e.flexStyle.mainOuter&&(e.flexStyle.mainOuter=e.flexStyle.mainOffset),"auto"===e.flexStyle.crossOuter&&(e.flexStyle.crossOuter=e.flexStyle.crossOffset),"number"==typeof e.flexStyle.mainBefore&&(e.flexStyle.mainOuter+=e.flexStyle.mainBefore),"number"==typeof e.flexStyle.mainAfter&&(e.flexStyle.mainOuter+=e.flexStyle.mainAfter),"number"==typeof e.flexStyle.crossBefore&&(e.flexStyle.crossOuter+=e.flexStyle.crossBefore),"number"==typeof e.flexStyle.crossAfter&&(e.flexStyle.crossOuter+=e.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var l=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=l(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=l(e.children,function(r,l){return"auto"===l.flexStyle.main?l.flexStyle.main=l.flexStyle.mainOffset+parseFloat(l.style.flexGrow)/t*e.mainSpace:l.flexStyle.main+=parseFloat(l.style.flexGrow)/t*e.mainSpace,l.flexStyle.mainOuter=l.flexStyle.main+l.flexStyle.mainBefore+l.flexStyle.mainAfter,r+l.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var l=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=l(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=l(e.children,function(r,l){return l.flexStyle.main+=parseFloat(l.style.flexShrink)/t*e.mainSpace,l.flexStyle.mainOuter=l.flexStyle.main+l.flexStyle.mainBefore+l.flexStyle.mainAfter,r+l.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var l=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,n=-1;r=e.children[++n];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=l(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=l(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function l(t){for(var r,l=-1;r=t.children[++l];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),l=-1;for(var n;n=t.lines[++l];)n.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-n.main,e("./flex-grow")(n),e("./flex-shrink")(n),e("./margin-main")(n),e("./margin-cross")(n),e("./justify-content")(n,t.style.justifyContent,t);e("./align-items")(t)}t.exports=l},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var l,n,o,f=r.flexStyle.mainInnerBefore,i=-1;if("flex-end"===t)for(l=e.mainSpace,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter;else if("center"===t)for(l=e.mainSpace/2,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter;else if("space-between"===t)for(n=e.mainSpace/(e.children.length-1),l=0,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter+n;else if("space-around"===t)for(n=2*e.mainSpace/(2*e.children.length),l=n/2,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter+n;else for(l=0,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var l=0;"auto"===t.flexStyle.crossBefore&&++l,"auto"===t.flexStyle.crossAfter&&++l;var n=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=n/l),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=n/l),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,l=-1;t=e.children[++l];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(l=-1;t=e.children[++l];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var l=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),l.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function l(e,t,r){for(var l=e.length,n=-1;++nlah' // The rendered string -// , index: 2 // The index of the element in `arr` -// , original: 'blah' // The original element in `arr` -// }] -// -// `opts` is an optional argument bag. Details: -// -// opts = { -// // string to put before a matching character -// pre: '' -// -// // string to put after matching character -// , post: '' -// -// // Optional function. Input is an entry in the given arr`, -// // output should be the string to test `pattern` against. -// // In this example, if `arr = [{crying: 'koala'}]` we would return -// // 'koala'. -// , extract: function(arg) { return arg.crying; } -// } -fuzzy.filter = function(pattern, arr, opts) { - if(!arr || arr.length === 0) { - return []; - } - if (typeof pattern !== 'string') { - return arr; - } - opts = opts || {}; - return arr - .reduce(function(prev, element, idx, arr) { - var str = element; - if(opts.extract) { - str = opts.extract(element); - } - var rendered = fuzzy.match(pattern, str, opts); - if(rendered != null) { - prev[prev.length] = { - string: rendered.rendered - , score: rendered.score - , index: idx - , original: element - }; - } - return prev; - }, []) - - // Sort by score. Browsers are inconsistent wrt stable/unstable - // sorting, so force stable by using the index in the case of tie. - // See http://ofb.net/~sethml/is-sort-stable.html - .sort(function(a,b) { - var compare = b.score - a.score; - if(compare) return compare; - return a.index - b.index; - }); -}; - - -}()); - - -},{}],4:[function(require,module,exports){ -/* This program is free software. It comes without any warranty, to - * the extent permitted by applicable law. You can redistribute it - * and/or modify it under the terms of the Do What The Fuck You Want - * To Public License, Version 2, as published by Sam Hocevar. See - * http://www.wtfpl.net/ for more details. */ -'use strict'; -module.exports = leftPad; - -var cache = [ - '', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ' -]; - -function leftPad (str, len, ch) { - // convert `str` to `string` - str = str + ''; - // `len` is the `pad`'s length now - len = len - str.length; - // doesn't need to pad - if (len <= 0) return str; - // `ch` defaults to `' '` - if (!ch && ch !== 0) ch = ' '; - // convert `ch` to `string` - ch = ch + ''; - // cache common use cases - if (ch === ' ' && len < 10) return cache[len] + str; - // `pad` starts with an empty string - var pad = ''; - // loop - while (true) { - // add `ch` to `pad` if `len` is odd - if (len & 1) pad += ch; - // divide `len` by 2, ditch the remainder - len >>= 1; - // "double" the `ch` so this operation count grows logarithmically on `len` - // each time `ch` is "doubled", the `len` would need to be "doubled" too - // similar to finding a value in binary search tree, hence O(log(n)) - if (len) ch += ch; - // `len` is 0, exit the loop - else break; - } - // pad `str`! - return pad + str; -} - -},{}],5:[function(require,module,exports){ -'use strict'; - -var sinterklaas = function sinterklaas() { - console.log('sinterklaas easter egg activated'); - var searchNode = document.querySelector('#search'); - var inputNode = searchNode.querySelector('input[type="text"]'); - var autocompleteNode = document.querySelector('.autocomplete'); - var autocomplete = false; - var lyrics = [[{ woord: 'Hoor ', time: 0 }, { woord: 'wie ', time: 0.3 }, { woord: 'klopt ', time: 0.6 }, { woord: 'daar ', time: 0.9 }, { woord: 'kind', time: 1.2 }, { woord: '\'ren', time: 1.5 }], [{ woord: 'Hoor ', time: 1.8 }, { woord: 'wie ', time: 2.1 }, { woord: 'klopt ', time: 2.5 }, { woord: 'daar ', time: 2.8 }, { woord: 'kind', time: 3.1 }, { woord: '\'ren', time: 3.4 }], [{ woord: 'Hoor ', time: 3.7 }, { woord: 'wie ', time: 4 }, { woord: 'tikt ', time: 4.3 }, { woord: 'daar ', time: 4.6 }, { woord: 'zacht', time: 4.8 }, { woord: 'jes ', time: 5.3 }, { woord: 'tegen ', time: 5.5 }, { woord: '\'t ', time: 6.1 }, { woord: 'raam ', time: 6.2 }]]; - - var originalValue = inputNode.value; - - inputNode.value = ''; - inputNode.placeholder = ''; - - lyrics.forEach(function (row, rowIndex) { - row.forEach(function (word, wordIndex) { - setTimeout(function () { - if (wordIndex === 0) inputNode.placeholder = ''; - inputNode.placeholder += word.woord; - }, word.time * 1000); - if (lyrics.length === rowIndex + 1 && lyrics[rowIndex].length === wordIndex + 1) { - setTimeout(function () { - if (inputNode.value === '') { - inputNode.value = originalValue; - } - inputNode.placeholder = 'Zoeken'; - autocomplete = true; - }, word.time * 1000 + 1000); - } - }); - }); - - inputNode.addEventListener('focus', function () { - if (!autocomplete) return; - - autocompleteNode.innerHTML = ''; - - var autocompleteLyrics = ['\'t Is een vreemd\'ling zeker,', 'die verdwaalt is zeker.', '\'k Zal eens even vragen naar zijn naam:']; - - autocompleteLyrics.forEach(function (row) { - var resultNode = document.createElement('li'); - resultNode.innerHTML = row; - autocompleteNode.appendChild(resultNode); - }); - }); - - inputNode.addEventListener('input', function () { - if (!autocomplete) return; - if (inputNode.value.toLowerCase() === 'sint nicolaas' || inputNode.value.toLowerCase() === 'sintnicolaas' || inputNode.value.toLowerCase() === 'sint nikolaas' || inputNode.value.toLowerCase() === 'sintnikolaas') { - inputNode.value = ''; - window.location.href = 'https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30'; - } - }); -}; - -module.exports = { sinterklaas: sinterklaas }; - -},{}],6:[function(require,module,exports){ -'use strict'; - -var leftPad = require('left-pad'); -var getWeek = require('./getWeek'); - -function getURLOfUsers(weekOffset, type, id) { - return '//' + window.location.host + '/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F' + (getWeek() + weekOffset + '%2F' + type + '%2F' + type + leftPad(id, 5, '0') + '.htm'); -} - -module.exports = getURLOfUsers; - -},{"./getWeek":7,"left-pad":4}],7:[function(require,module,exports){ -"use strict"; - -// copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js, -// were using the same code as they do to be sure that we always get the same -// week number. -function getWeek() { - // Create a copy of this date object - var target = new Date(); - - // ISO week date weeks start on monday - // so correct the day number - var dayNr = (target.getDay() + 6) % 7; - - // ISO 8601 states that week 1 is the week - // with the first thursday of that year. - // Set the target date to the thursday in the target week - target.setDate(target.getDate() - dayNr + 3); - - // Store the millisecond value of the target date - var firstThursday = target.valueOf(); - - // Set the target to the first thursday of the year - // First set the target to january first - target.setMonth(0, 1); - // Not a thursday? Correct the date to the next thursday - if (target.getDay() !== 4) { - target.setMonth(0, 1 + (4 - target.getDay() + 7) % 7); - } - - // The weeknumber is the number of weeks between the - // first thursday of the year and the thursday in the target week - return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000 -} - -module.exports = getWeek; - -},{}],8:[function(require,module,exports){ -'use strict'; - -/* global ga FLAGS */ - -require('flexibility'); - -var fuzzy = require('fuzzy'); -// const getUsers = require('./getUsers') -var getURLOfUser = require('./getURLOfUser'); -var removeDiacritics = require('diacritics').remove; -var getWeek = require('./getWeek'); -var easterEggs = require('./easterEggs'); - -var searchNode = document.querySelector('#search'); -var inputNode = searchNode.querySelector('input[type="text"]'); -var autocompleteNode = document.querySelector('.autocomplete'); -var scheduleIframe = document.querySelector('#schedule'); -var prevButton = document.querySelectorAll('input[type="button"]')[0]; -var nextButton = document.querySelectorAll('input[type="button"]')[1]; -var currentWeekNode = document.querySelector('.current'); -var favNode = document.querySelector('.fav'); - -if (FLAGS.indexOf('NO_FEATURE_DETECT') === -1) { - if (document.querySelector('#schedule').getClientRects()[0].bottom !== document.body.getClientRects()[0].bottom) { - window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; - } else { - window.onerror = function () { - window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; - }; - } -} else { - console.log('feature detection is OFF'); -} - -var selectedResult = -1; -var selectedUser = void 0; -var results = []; -var offset = 0; - -function getUsers() { - var nodes = document.querySelector('#data').querySelectorAll('.data-user'); - var elements = Array.prototype.slice.call(nodes); - var users = elements.map(function (userNode) { - var type = userNode.querySelector('.data-type').textContent; - var value = userNode.querySelector('.data-value').textContent; - var index = Number(userNode.querySelector('.data-index').textContent); - return { type: type, value: value, index: index }; - }); - - document.querySelector('#data').outerHTML = ''; - - return users; -} - -var users = getUsers(); - -function getCurrentFav() { - if (!window.localStorage.getItem('fav')) return; - var favCode = window.localStorage.getItem('fav').split(':'); - var fav = users.filter(function (user) { - return user.type === favCode[0] && user.index === Number(favCode[1]); - }); - return fav[0]; -} - -function changeFav(isFav) { - if (!selectedUser) return; - if (isFav) { - window.localStorage.setItem('fav', selectedUser.type + ':' + selectedUser.index); - } else { - window.localStorage.removeItem('fav'); - } - updateFavNode(); -} - -function usersEqual(user1, user2) { - if (user1 == null || user2 == null) return false; - return user1.type === user2.type && user1.index === user2.index; -} - -function updateFavNode() { - if (usersEqual(getCurrentFav(), selectedUser)) { - favNode.innerHTML = ''; - } else { - favNode.innerHTML = ''; - } -} - -function updateWeekText() { - if (offset === 0) currentWeekNode.innerHTML = 'Week ' + (getWeek() + offset);else currentWeekNode.innerHTML = 'Week ' + (getWeek() + offset) + ''; -} - -updateWeekText(); - -searchNode.addEventListener('keydown', function (e) { - if (results.length !== 0 && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) { - e.preventDefault(); - - if (document.querySelector('.selected')) document.querySelector('.selected').classList.remove('selected'); - - var change = e.key === 'ArrowDown' ? 1 : -1; - selectedResult += change; - if (selectedResult < -1) selectedResult = results.length - 1;else if (selectedResult > results.length - 1) selectedResult = -1; - - if (selectedResult !== -1) autocompleteNode.children[selectedResult].classList.add('selected'); - } -}); - -searchNode.addEventListener('input', function (e) { - searchNode.className = ''; - autocompleteNode.innerHTML = ''; - if (inputNode.value.trim() === '') return; - - selectedResult = -1; - results = fuzzy.filter(removeDiacritics(inputNode.value), users, { - extract: function extract(el) { - return removeDiacritics(el.value); - } - }).slice(0, 7); - - results.forEach(function (result) { - var resultNode = document.createElement('li'); - resultNode.innerHTML = '' + result.original.value; - autocompleteNode.appendChild(resultNode); - }); -}); - -searchNode.addEventListener('submit', submitForm); - -function submitForm(e) { - if (e) e.preventDefault(); - if (results.length !== 0) { - var indexInResult = selectedResult === -1 ? 0 : selectedResult; - selectedUser = users[results[indexInResult].index]; - } - if (selectedUser == null) return; - - updateFavNode(); - - inputNode.value = selectedUser.value; - autocompleteNode.innerHTML = ''; - - inputNode.blur(); - - scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); - - var eventAction = void 0; - switch (selectedUser.type) { - case 'c': - eventAction = 'Class'; - break; - case 't': - eventAction = 'Teacher'; - break; - case 'r': - eventAction = 'Room'; - break; - case 's': - eventAction = 'Student'; - break; - } - var eventLabel = selectedUser.value; - - ga(function () { - ga('send', { hitType: 'event', eventCategory: 'search', eventAction: eventAction, eventLabel: eventLabel }); - }); -} - -autocompleteNode.addEventListener('click', function (e) { - if (autocompleteNode.contains(e.target)) { - selectedResult = Array.prototype.indexOf.call(e.target.parentElement.childNodes, e.target); - submitForm(); - } -}); - -prevButton.addEventListener('click', function () { - offset--; - updateWeekText(); - submitForm(); -}); - -nextButton.addEventListener('click', function () { - offset++; - updateWeekText(); - submitForm(); -}); - -inputNode.addEventListener('click', function () { - inputNode.select(); -}); - -inputNode.addEventListener('blur', function () { - var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - if (!isSafari) { - inputNode.selectionStart = inputNode.selectionEnd = -1; - } -}); - -searchNode.addEventListener('blur', function (e) { - autocompleteNode.innerHTML = ''; -}); - -favNode.addEventListener('click', function () { - if (usersEqual(getCurrentFav(), selectedUser)) { - changeFav(false); - } else { - changeFav(true); - } -}); - -var currentFav = getCurrentFav(); - -if (currentFav) { - (function () { - selectedUser = currentFav; - inputNode.value = selectedUser.value; - scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); - updateFavNode(); - - var eventAction = void 0; - switch (selectedUser.type) { - case 'c': - eventAction = 'Class'; - break; - case 't': - eventAction = 'Teacher'; - break; - case 'r': - eventAction = 'Room'; - break; - case 's': - eventAction = 'Student'; - break; - } - var eventLabel = selectedUser.value; - - ga(function () { - ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction: eventAction, eventLabel: eventLabel }); - }); - })(); -} else if (inputNode.value === '') { - searchNode.className = 'no-input'; - inputNode.focus(); -} - -document.body.style = ''; - -window.easterEggs = easterEggs; - -},{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0Usc0JBQWMsT0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsTUFBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxRQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxPQUFHLFlBQVk7QUFDYixTQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFlBQW5DLEVBQWlELHdCQUFqRCxFQUE4RCxzQkFBOUQsRUFBWDtBQUNELEtBRkQ7QUF2QmM7QUEwQmYsQ0ExQkQsTUEwQk8sSUFBSSxVQUFVLEtBQVYsS0FBb0IsRUFBeEIsRUFBNEI7QUFDakMsYUFBVyxTQUFYLEdBQXVCLFVBQXZCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULENBQWMsS0FBZCxHQUFzQixFQUF0Qjs7QUFFQSxPQUFPLFVBQVAsR0FBb0IsVUFBcEIiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0VXNlcnMgKCkge1xuICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkYXRhJylcbiAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRhdGEtdXNlcicpXG4gIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobm9kZXMpXG4gIGNvbnN0IHVzZXJzID0gZWxlbWVudHMubWFwKHVzZXJOb2RlID0+IHtcbiAgICBjb25zdCB0eXBlID0gdXNlck5vZGUucXVlcnlTZWxlY3RvcignLmRhdGEtdHlwZScpLnRleHRDb250ZW50XG4gICAgY29uc3QgdmFsdWUgPSB1c2VyTm9kZS5xdWVyeVNlbGVjdG9yKCcuZGF0YS12YWx1ZScpLnRleHRDb250ZW50XG4gICAgY29uc3QgaW5kZXggPSBOdW1iZXIodXNlck5vZGUucXVlcnlTZWxlY3RvcignLmRhdGEtaW5kZXgnKS50ZXh0Q29udGVudClcbiAgICByZXR1cm4geyB0eXBlLCB2YWx1ZSwgaW5kZXggfVxuICB9KVxuXG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkYXRhJykub3V0ZXJIVE1MID0gJydcblxuICByZXR1cm4gdXNlcnNcbn1cblxuY29uc3QgdXNlcnMgPSBnZXRVc2VycygpXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IHVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7XG4gIHNlYXJjaE5vZGUuY2xhc3NOYW1lID0gJydcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIHVzZXJzLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gdXNlcnNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGlzU2FmYXJpID0gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KVxuICBpZiAoIWlzU2FmYXJpKSB7XG4gICAgaW5wdXROb2RlLnNlbGVjdGlvblN0YXJ0ID0gaW5wdXROb2RlLnNlbGVjdGlvbkVuZCA9IC0xXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgc2VhcmNoTm9kZS5jbGFzc05hbWUgPSAnbm8taW5wdXQnXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUgPSAnJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== +!function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var i="function"==typeof require&&require;if(!a&&i)return i(s,!0);if(l)return l(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var c=r[s]={exports:{}};t[s][0].call(c.exports,function(e){var r=t[s][1][e];return o(r?r:e)},c,c.exports,e,t,r,n)}return r[s].exports}for(var l="function"==typeof require&&require,s=0;s1&&"flex-start"===e.style.alignContent)for(t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;n=e.lines[++o];)n.crossStart=t,n.cross+=r,t+=n.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var n=child.style.alignSelf;"auto"===n&&(n=e.style.alignItems),"flex-start"===n?child.flexStyle.crossStart=line.crossStart:"flex-end"===n?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===n?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function e(t,e){var r="row"===e||"row-reverse"===e,n=t.mainAxis;if(n){var o=r&&"inline"===n||!r&&"block"===n;o||(t.flexStyle={main:t.flexStyle.cross,cross:t.flexStyle.main,mainOffset:t.flexStyle.crossOffset,crossOffset:t.flexStyle.mainOffset,mainBefore:t.flexStyle.crossBefore,mainAfter:t.flexStyle.crossAfter,crossBefore:t.flexStyle.mainBefore,crossAfter:t.flexStyle.mainAfter,mainInnerBefore:t.flexStyle.crossInnerBefore,mainInnerAfter:t.flexStyle.crossInnerAfter,crossInnerBefore:t.flexStyle.mainInnerBefore,crossInnerAfter:t.flexStyle.mainInnerAfter,mainBorderBefore:t.flexStyle.crossBorderBefore,mainBorderAfter:t.flexStyle.crossBorderAfter,crossBorderBefore:t.flexStyle.mainBorderBefore,crossBorderAfter:t.flexStyle.mainBorderAfter})}else r?t.flexStyle={main:t.style.width,cross:t.style.height,mainOffset:t.style.offsetWidth,crossOffset:t.style.offsetHeight,mainBefore:t.style.marginLeft,mainAfter:t.style.marginRight,crossBefore:t.style.marginTop,crossAfter:t.style.marginBottom,mainInnerBefore:t.style.paddingLeft,mainInnerAfter:t.style.paddingRight,crossInnerBefore:t.style.paddingTop,crossInnerAfter:t.style.paddingBottom,mainBorderBefore:t.style.borderLeftWidth,mainBorderAfter:t.style.borderRightWidth,crossBorderBefore:t.style.borderTopWidth,crossBorderAfter:t.style.borderBottomWidth}:t.flexStyle={main:t.style.height,cross:t.style.width,mainOffset:t.style.offsetHeight,crossOffset:t.style.offsetWidth,mainBefore:t.style.marginTop,mainAfter:t.style.marginBottom,crossBefore:t.style.marginLeft,crossAfter:t.style.marginRight,mainInnerBefore:t.style.paddingTop,mainInnerAfter:t.style.paddingBottom,crossInnerBefore:t.style.paddingLeft,crossInnerAfter:t.style.paddingRight,mainBorderBefore:t.style.borderTopWidth,mainBorderAfter:t.style.borderBottomWidth,crossBorderBefore:t.style.borderLeftWidth,crossBorderAfter:t.style.borderRightWidth},"content-box"===t.style.boxSizing&&("number"==typeof t.flexStyle.main&&(t.flexStyle.main+=t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),"number"==typeof t.flexStyle.cross&&(t.flexStyle.cross+=t.flexStyle.crossInnerBefore+t.flexStyle.crossInnerAfter+t.flexStyle.crossBorderBefore+t.flexStyle.crossBorderAfter));t.mainAxis=r?"inline":"block",t.crossAxis=r?"block":"inline","number"==typeof t.style.flexBasis&&(t.flexStyle.main=t.style.flexBasis+t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),t.flexStyle.mainOuter=t.flexStyle.main,t.flexStyle.crossOuter=t.flexStyle.cross,"auto"===t.flexStyle.mainOuter&&(t.flexStyle.mainOuter=t.flexStyle.mainOffset),"auto"===t.flexStyle.crossOuter&&(t.flexStyle.crossOuter=t.flexStyle.crossOffset),"number"==typeof t.flexStyle.mainBefore&&(t.flexStyle.mainOuter+=t.flexStyle.mainBefore),"number"==typeof t.flexStyle.mainAfter&&(t.flexStyle.mainOuter+=t.flexStyle.mainAfter),"number"==typeof t.flexStyle.crossBefore&&(t.flexStyle.crossOuter+=t.flexStyle.crossBefore),"number"==typeof t.flexStyle.crossAfter&&(t.flexStyle.crossOuter+=t.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=n(e.children,function(r,n){return"auto"===n.flexStyle.main?n.flexStyle.main=n.flexStyle.mainOffset+parseFloat(n.style.flexGrow)/t*e.mainSpace:n.flexStyle.main+=parseFloat(n.style.flexGrow)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=n(e.children,function(r,n){return n.flexStyle.main+=parseFloat(n.style.flexShrink)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var n=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,o=-1;r=e.children[++o];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=n(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=n(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function n(t){for(var r,n=-1;r=t.children[++n];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),n=-1;for(var o;o=t.lines[++n];)o.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-o.main,e("./flex-grow")(o),e("./flex-shrink")(o),e("./margin-main")(o),e("./margin-cross")(o),e("./justify-content")(o,t.style.justifyContent,t);e("./align-items")(t)}t.exports=n},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var n,o,l,s=r.flexStyle.mainInnerBefore,a=-1;if("flex-end"===t)for(n=e.mainSpace,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("center"===t)for(n=e.mainSpace/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("space-between"===t)for(o=e.mainSpace/(e.children.length-1),n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else if("space-around"===t)for(o=2*e.mainSpace/(2*e.children.length),n=o/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else for(n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var n=0;"auto"===t.flexStyle.crossBefore&&++n,"auto"===t.flexStyle.crossAfter&&++n;var o=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=o/n),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=o/n),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var n=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),n.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function n(e,t,r){for(var n=e.length,o=-1;++o>=1,!t)break;r+=r}return n+e}t.exports=n;var o=[""," "," "," "," "," "," "," "," "," "]},{}],5:[function(e,t,r){"use strict";var n=function(){console.log("sinterklaas easter egg activated");var e=document.querySelector("#search"),t=e.querySelector('input[type="text"]'),r=document.querySelector(".autocomplete"),n=!1,o=[[{woord:"Hoor ",time:0},{woord:"wie ",time:.3},{woord:"klopt ",time:.6},{woord:"daar ",time:.9},{woord:"kind",time:1.2},{woord:"'ren",time:1.5}],[{woord:"Hoor ",time:1.8},{woord:"wie ",time:2.1},{woord:"klopt ",time:2.5},{woord:"daar ",time:2.8},{woord:"kind",time:3.1},{woord:"'ren",time:3.4}],[{woord:"Hoor ",time:3.7},{woord:"wie ",time:4},{woord:"tikt ",time:4.3},{woord:"daar ",time:4.6},{woord:"zacht",time:4.8},{woord:"jes ",time:5.3},{woord:"tegen ",time:5.5},{woord:"'t ",time:6.1},{woord:"raam ",time:6.2}]],l=t.value;t.value="",t.placeholder="",o.forEach(function(e,r){e.forEach(function(e,s){setTimeout(function(){0===s&&(t.placeholder=""),t.placeholder+=e.woord},1e3*e.time),o.length===r+1&&o[r].length===s+1&&setTimeout(function(){""===t.value&&(t.value=l),t.placeholder="Zoeken",n=!0},1e3*e.time+1e3)})}),t.addEventListener("focus",function(){if(n){r.innerHTML="";var e=["'t Is een vreemd'ling zeker,","die verdwaalt is zeker.","'k Zal eens even vragen naar zijn naam:"];e.forEach(function(e){var t=document.createElement("li");t.innerHTML=e,r.appendChild(t)})}}),t.addEventListener("input",function(){n&&("sint nicolaas"!==t.value.toLowerCase()&&"sintnicolaas"!==t.value.toLowerCase()&&"sint nikolaas"!==t.value.toLowerCase()&&"sintnikolaas"!==t.value.toLowerCase()||(t.value="",window.location.href="https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30"))})};t.exports={sinterklaas:n}},{}],6:[function(e,t,r){"use strict";function n(e,t,r){return"//"+window.location.host+"/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F"+(l()+e+"%2F"+t+"%2F"+t+o(r,5,"0")+".htm")}var o=e("left-pad"),l=e("./getWeek");t.exports=n},{"./getWeek":7,"left-pad":4}],7:[function(e,t,r){"use strict";function n(){var e=new Date,t=(e.getDay()+6)%7;e.setDate(e.getDate()-t+3);var r=e.valueOf();return e.setMonth(0,1),4!==e.getDay()&&e.setMonth(0,1+(4-e.getDay()+7)%7),1+Math.ceil((r-e)/6048e5)}t.exports=n},{}],8:[function(e,t,r){"use strict";function n(){if(window.localStorage.getItem("fav")){var e=window.localStorage.getItem("fav").split(":"),t=USERS.filter(function(t){return t.type===e[0]&&t.index===Number(e[1])});return t[0]}}function o(e){w&&(e?window.localStorage.setItem("fav",w.type+":"+w.index):window.localStorage.removeItem("fav"),s())}function l(e,t){return null!=e&&null!=t&&(e.type===t.type&&e.index===t.index)}function s(){l(n(),w)?v.innerHTML="":v.innerHTML=""}function a(){0===O?g.innerHTML="Week "+(u()+O):g.innerHTML="Week "+(u()+O)+""}function i(e){if(e&&e.preventDefault(),0!==A.length){var t=B===-1?0:B;w=USERS[A[t].index]}if(null!=w){s(),m.value=w.value,S.innerHTML="",m.blur(),h.src=c(O,w.type,w.index+1);var r=void 0;switch(w.type){case"c":r="Class";break;case"t":r="Teacher";break;case"r":r="Room";break;case"s":r="Student"}var n=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search",eventAction:r,eventLabel:n})})}}e("flexibility");var f=e("fuzzy"),c=e("./getURLOfUser"),d=e("diacritics").remove,u=e("./getWeek"),y=e("./easterEggs"),x=document.querySelector("#search"),m=x.querySelector('input[type="text"]'),S=document.querySelector(".autocomplete"),h=document.querySelector("#schedule"),p=document.querySelectorAll('input[type="button"]')[0],b=document.querySelectorAll('input[type="button"]')[1],g=document.querySelector(".current"),v=document.querySelector(".fav");FLAGS.indexOf("NO_FEATURE_DETECT")===-1?document.querySelector("#schedule").getClientRects()[0].bottom!==document.body.getClientRects()[0].bottom?window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/":window.onerror=function(){window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/"}:console.log("feature detection is OFF");var B=-1,w=void 0,A=[],O=0;a(),x.addEventListener("keydown",function(e){if(0!==A.length&&("ArrowDown"===e.key||"ArrowUp"===e.key)){e.preventDefault(),document.querySelector(".selected")&&document.querySelector(".selected").classList.remove("selected");var t="ArrowDown"===e.key?1:-1;B+=t,B<-1?B=A.length-1:B>A.length-1&&(B=-1),B!==-1&&S.children[B].classList.add("selected")}}),x.addEventListener("input",function(e){x.className="",S.innerHTML="",""!==m.value.trim()&&(B=-1,A=f.filter(d(m.value),USERS,{extract:function(e){return d(e.value)}}).slice(0,7),A.forEach(function(e){var t=document.createElement("li");t.innerHTML=""+e.original.value,S.appendChild(t)}))}),x.addEventListener("submit",i),S.addEventListener("click",function(e){S.contains(e.target)&&(B=Array.prototype.indexOf.call(e.target.parentElement.childNodes,e.target),i())}),p.addEventListener("click",function(){O--,a(),i()}),b.addEventListener("click",function(){O++,a(),i()}),m.addEventListener("click",function(){m.select()}),m.addEventListener("blur",function(){var e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);e||(m.selectionStart=m.selectionEnd=-1)}),x.addEventListener("blur",function(e){S.innerHTML=""}),v.addEventListener("click",function(){o(l(n(),w)?!1:!0)});var L=n();L?!function(){w=L,m.value=w.value,h.src=c(O,w.type,w.index+1),s();var e=void 0;switch(w.type){case"c":e="Class";break;case"t":e="Teacher";break;case"r":e="Room";break;case"s":e="Student"}var t=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search fav",eventAction:e,eventLabel:t})})}():""===m.value&&(x.className="no-input",m.focus()),document.body.style="",window.easterEggs=y},{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,diacritics:1,flexibility:2,fuzzy:3}]},{},[8]); diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 31645e8..a1e7dcf 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -1,4 +1,4 @@ -/* global ga FLAGS */ +/* global ga FLAGS USERS */ require('flexibility') @@ -36,28 +36,10 @@ let selectedUser let results = [] let offset = 0 -function getUsers () { - const nodes = document.querySelector('#data') - .querySelectorAll('.data-user') - const elements = Array.prototype.slice.call(nodes) - const users = elements.map(userNode => { - const type = userNode.querySelector('.data-type').textContent - const value = userNode.querySelector('.data-value').textContent - const index = Number(userNode.querySelector('.data-index').textContent) - return { type, value, index } - }) - - document.querySelector('#data').outerHTML = '' - - return users -} - -const users = getUsers() - function getCurrentFav () { if (!window.localStorage.getItem('fav')) return const favCode = window.localStorage.getItem('fav').split(':') - const fav = users.filter(user => user.type === favCode[0] && user.index === Number(favCode[1])) + const fav = USERS.filter(user => user.type === favCode[0] && user.index === Number(favCode[1])) return fav[0] } @@ -112,7 +94,7 @@ searchNode.addEventListener('input', function (e) { if (inputNode.value.trim() === '') return selectedResult = -1 - results = fuzzy.filter(removeDiacritics(inputNode.value), users, { + results = fuzzy.filter(removeDiacritics(inputNode.value), USERS, { extract: function (el) { return removeDiacritics(el.value) } }).slice(0, 7) @@ -129,7 +111,7 @@ function submitForm (e) { if (e) e.preventDefault() if (results.length !== 0) { const indexInResult = selectedResult === -1 ? 0 : selectedResult - selectedUser = users[results[indexInResult].index] + selectedUser = USERS[results[indexInResult].index] } if (selectedUser == null) return diff --git a/routes/index.js b/routes/index.js index 8b31ad5..1ab2ba3 100644 --- a/routes/index.js +++ b/routes/index.js @@ -11,8 +11,9 @@ router.get('/', function (req, res, next) { flags.push('NO_FEATURE_DETECT') } - const flagsStr = `var FLAGS = [${flags.map(flag => `"${flag}"`).toString(', ')}];` - res.render('index', { flagsStr, users: users.users }) + const flagsStr = `var FLAGS = ${JSON.stringify(flags)};` + const usersStr = `var USERS = ${JSON.stringify(users.users)};` + res.render('index', { flagsStr, usersStr }) }) module.exports = router diff --git a/views/index.jade b/views/index.jade index de089e1..82c12e1 100644 --- a/views/index.jade +++ b/views/index.jade @@ -8,15 +8,6 @@ block head script(defer='', src='https://code.getmdl.io/1.2.1/material.min.js') block content - #data(style='display: none;') - each user in users - .data-user - .data-type= user.type - .data-value= user.value - .data-index= user.index - .data-other= user.other - .data-isID= user.isID - form#search .top-bar .title @@ -47,5 +38,5 @@ block content block scripts script. - !{flagsStr} + !{flagsStr}!{usersStr} script(src='/javascripts/bundle.js') diff --git a/views/layout.jade b/views/layout.jade index f7c47e0..a7b9d93 100644 --- a/views/layout.jade +++ b/views/layout.jade @@ -7,7 +7,6 @@ html meta(name='viewport', content='width=device-width, initial-scale=1') link(href='https://fonts.googleapis.com/css?family=Roboto', rel='stylesheet') link(rel='manifest', href='/manifest.webmanifest') - script(src='//d2wy8f7a9ursnm.cloudfront.net/bugsnag-3.min.js', data-apikey='bd5c41bb376798642d7ae4701a09a8fb') block head body(style='opacity: 0;') block content -- cgit v1.1 From e9701f33a6f13b38a49d47b55ba802e6a8b42cfa Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Dec 2016 16:15:51 +0100 Subject: fixed safari bug --- public/javascripts/bundle.js | 2 +- public/javascripts/main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index e899a20..d62046d 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -1 +1 @@ -!function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var i="function"==typeof require&&require;if(!a&&i)return i(s,!0);if(l)return l(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var c=r[s]={exports:{}};t[s][0].call(c.exports,function(e){var r=t[s][1][e];return o(r?r:e)},c,c.exports,e,t,r,n)}return r[s].exports}for(var l="function"==typeof require&&require,s=0;s1&&"flex-start"===e.style.alignContent)for(t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;n=e.lines[++o];)n.crossStart=t,n.cross+=r,t+=n.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var n=child.style.alignSelf;"auto"===n&&(n=e.style.alignItems),"flex-start"===n?child.flexStyle.crossStart=line.crossStart:"flex-end"===n?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===n?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function e(t,e){var r="row"===e||"row-reverse"===e,n=t.mainAxis;if(n){var o=r&&"inline"===n||!r&&"block"===n;o||(t.flexStyle={main:t.flexStyle.cross,cross:t.flexStyle.main,mainOffset:t.flexStyle.crossOffset,crossOffset:t.flexStyle.mainOffset,mainBefore:t.flexStyle.crossBefore,mainAfter:t.flexStyle.crossAfter,crossBefore:t.flexStyle.mainBefore,crossAfter:t.flexStyle.mainAfter,mainInnerBefore:t.flexStyle.crossInnerBefore,mainInnerAfter:t.flexStyle.crossInnerAfter,crossInnerBefore:t.flexStyle.mainInnerBefore,crossInnerAfter:t.flexStyle.mainInnerAfter,mainBorderBefore:t.flexStyle.crossBorderBefore,mainBorderAfter:t.flexStyle.crossBorderAfter,crossBorderBefore:t.flexStyle.mainBorderBefore,crossBorderAfter:t.flexStyle.mainBorderAfter})}else r?t.flexStyle={main:t.style.width,cross:t.style.height,mainOffset:t.style.offsetWidth,crossOffset:t.style.offsetHeight,mainBefore:t.style.marginLeft,mainAfter:t.style.marginRight,crossBefore:t.style.marginTop,crossAfter:t.style.marginBottom,mainInnerBefore:t.style.paddingLeft,mainInnerAfter:t.style.paddingRight,crossInnerBefore:t.style.paddingTop,crossInnerAfter:t.style.paddingBottom,mainBorderBefore:t.style.borderLeftWidth,mainBorderAfter:t.style.borderRightWidth,crossBorderBefore:t.style.borderTopWidth,crossBorderAfter:t.style.borderBottomWidth}:t.flexStyle={main:t.style.height,cross:t.style.width,mainOffset:t.style.offsetHeight,crossOffset:t.style.offsetWidth,mainBefore:t.style.marginTop,mainAfter:t.style.marginBottom,crossBefore:t.style.marginLeft,crossAfter:t.style.marginRight,mainInnerBefore:t.style.paddingTop,mainInnerAfter:t.style.paddingBottom,crossInnerBefore:t.style.paddingLeft,crossInnerAfter:t.style.paddingRight,mainBorderBefore:t.style.borderTopWidth,mainBorderAfter:t.style.borderBottomWidth,crossBorderBefore:t.style.borderLeftWidth,crossBorderAfter:t.style.borderRightWidth},"content-box"===t.style.boxSizing&&("number"==typeof t.flexStyle.main&&(t.flexStyle.main+=t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),"number"==typeof t.flexStyle.cross&&(t.flexStyle.cross+=t.flexStyle.crossInnerBefore+t.flexStyle.crossInnerAfter+t.flexStyle.crossBorderBefore+t.flexStyle.crossBorderAfter));t.mainAxis=r?"inline":"block",t.crossAxis=r?"block":"inline","number"==typeof t.style.flexBasis&&(t.flexStyle.main=t.style.flexBasis+t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),t.flexStyle.mainOuter=t.flexStyle.main,t.flexStyle.crossOuter=t.flexStyle.cross,"auto"===t.flexStyle.mainOuter&&(t.flexStyle.mainOuter=t.flexStyle.mainOffset),"auto"===t.flexStyle.crossOuter&&(t.flexStyle.crossOuter=t.flexStyle.crossOffset),"number"==typeof t.flexStyle.mainBefore&&(t.flexStyle.mainOuter+=t.flexStyle.mainBefore),"number"==typeof t.flexStyle.mainAfter&&(t.flexStyle.mainOuter+=t.flexStyle.mainAfter),"number"==typeof t.flexStyle.crossBefore&&(t.flexStyle.crossOuter+=t.flexStyle.crossBefore),"number"==typeof t.flexStyle.crossAfter&&(t.flexStyle.crossOuter+=t.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=n(e.children,function(r,n){return"auto"===n.flexStyle.main?n.flexStyle.main=n.flexStyle.mainOffset+parseFloat(n.style.flexGrow)/t*e.mainSpace:n.flexStyle.main+=parseFloat(n.style.flexGrow)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=n(e.children,function(r,n){return n.flexStyle.main+=parseFloat(n.style.flexShrink)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var n=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,o=-1;r=e.children[++o];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=n(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=n(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function n(t){for(var r,n=-1;r=t.children[++n];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),n=-1;for(var o;o=t.lines[++n];)o.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-o.main,e("./flex-grow")(o),e("./flex-shrink")(o),e("./margin-main")(o),e("./margin-cross")(o),e("./justify-content")(o,t.style.justifyContent,t);e("./align-items")(t)}t.exports=n},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var n,o,l,s=r.flexStyle.mainInnerBefore,a=-1;if("flex-end"===t)for(n=e.mainSpace,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("center"===t)for(n=e.mainSpace/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("space-between"===t)for(o=e.mainSpace/(e.children.length-1),n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else if("space-around"===t)for(o=2*e.mainSpace/(2*e.children.length),n=o/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else for(n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var n=0;"auto"===t.flexStyle.crossBefore&&++n,"auto"===t.flexStyle.crossAfter&&++n;var o=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=o/n),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=o/n),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var n=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),n.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function n(e,t,r){for(var n=e.length,o=-1;++o>=1,!t)break;r+=r}return n+e}t.exports=n;var o=[""," "," "," "," "," "," "," "," "," "]},{}],5:[function(e,t,r){"use strict";var n=function(){console.log("sinterklaas easter egg activated");var e=document.querySelector("#search"),t=e.querySelector('input[type="text"]'),r=document.querySelector(".autocomplete"),n=!1,o=[[{woord:"Hoor ",time:0},{woord:"wie ",time:.3},{woord:"klopt ",time:.6},{woord:"daar ",time:.9},{woord:"kind",time:1.2},{woord:"'ren",time:1.5}],[{woord:"Hoor ",time:1.8},{woord:"wie ",time:2.1},{woord:"klopt ",time:2.5},{woord:"daar ",time:2.8},{woord:"kind",time:3.1},{woord:"'ren",time:3.4}],[{woord:"Hoor ",time:3.7},{woord:"wie ",time:4},{woord:"tikt ",time:4.3},{woord:"daar ",time:4.6},{woord:"zacht",time:4.8},{woord:"jes ",time:5.3},{woord:"tegen ",time:5.5},{woord:"'t ",time:6.1},{woord:"raam ",time:6.2}]],l=t.value;t.value="",t.placeholder="",o.forEach(function(e,r){e.forEach(function(e,s){setTimeout(function(){0===s&&(t.placeholder=""),t.placeholder+=e.woord},1e3*e.time),o.length===r+1&&o[r].length===s+1&&setTimeout(function(){""===t.value&&(t.value=l),t.placeholder="Zoeken",n=!0},1e3*e.time+1e3)})}),t.addEventListener("focus",function(){if(n){r.innerHTML="";var e=["'t Is een vreemd'ling zeker,","die verdwaalt is zeker.","'k Zal eens even vragen naar zijn naam:"];e.forEach(function(e){var t=document.createElement("li");t.innerHTML=e,r.appendChild(t)})}}),t.addEventListener("input",function(){n&&("sint nicolaas"!==t.value.toLowerCase()&&"sintnicolaas"!==t.value.toLowerCase()&&"sint nikolaas"!==t.value.toLowerCase()&&"sintnikolaas"!==t.value.toLowerCase()||(t.value="",window.location.href="https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30"))})};t.exports={sinterklaas:n}},{}],6:[function(e,t,r){"use strict";function n(e,t,r){return"//"+window.location.host+"/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F"+(l()+e+"%2F"+t+"%2F"+t+o(r,5,"0")+".htm")}var o=e("left-pad"),l=e("./getWeek");t.exports=n},{"./getWeek":7,"left-pad":4}],7:[function(e,t,r){"use strict";function n(){var e=new Date,t=(e.getDay()+6)%7;e.setDate(e.getDate()-t+3);var r=e.valueOf();return e.setMonth(0,1),4!==e.getDay()&&e.setMonth(0,1+(4-e.getDay()+7)%7),1+Math.ceil((r-e)/6048e5)}t.exports=n},{}],8:[function(e,t,r){"use strict";function n(){if(window.localStorage.getItem("fav")){var e=window.localStorage.getItem("fav").split(":"),t=USERS.filter(function(t){return t.type===e[0]&&t.index===Number(e[1])});return t[0]}}function o(e){w&&(e?window.localStorage.setItem("fav",w.type+":"+w.index):window.localStorage.removeItem("fav"),s())}function l(e,t){return null!=e&&null!=t&&(e.type===t.type&&e.index===t.index)}function s(){l(n(),w)?v.innerHTML="":v.innerHTML=""}function a(){0===O?g.innerHTML="Week "+(u()+O):g.innerHTML="Week "+(u()+O)+""}function i(e){if(e&&e.preventDefault(),0!==A.length){var t=B===-1?0:B;w=USERS[A[t].index]}if(null!=w){s(),m.value=w.value,S.innerHTML="",m.blur(),h.src=c(O,w.type,w.index+1);var r=void 0;switch(w.type){case"c":r="Class";break;case"t":r="Teacher";break;case"r":r="Room";break;case"s":r="Student"}var n=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search",eventAction:r,eventLabel:n})})}}e("flexibility");var f=e("fuzzy"),c=e("./getURLOfUser"),d=e("diacritics").remove,u=e("./getWeek"),y=e("./easterEggs"),x=document.querySelector("#search"),m=x.querySelector('input[type="text"]'),S=document.querySelector(".autocomplete"),h=document.querySelector("#schedule"),p=document.querySelectorAll('input[type="button"]')[0],b=document.querySelectorAll('input[type="button"]')[1],g=document.querySelector(".current"),v=document.querySelector(".fav");FLAGS.indexOf("NO_FEATURE_DETECT")===-1?document.querySelector("#schedule").getClientRects()[0].bottom!==document.body.getClientRects()[0].bottom?window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/":window.onerror=function(){window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/"}:console.log("feature detection is OFF");var B=-1,w=void 0,A=[],O=0;a(),x.addEventListener("keydown",function(e){if(0!==A.length&&("ArrowDown"===e.key||"ArrowUp"===e.key)){e.preventDefault(),document.querySelector(".selected")&&document.querySelector(".selected").classList.remove("selected");var t="ArrowDown"===e.key?1:-1;B+=t,B<-1?B=A.length-1:B>A.length-1&&(B=-1),B!==-1&&S.children[B].classList.add("selected")}}),x.addEventListener("input",function(e){x.className="",S.innerHTML="",""!==m.value.trim()&&(B=-1,A=f.filter(d(m.value),USERS,{extract:function(e){return d(e.value)}}).slice(0,7),A.forEach(function(e){var t=document.createElement("li");t.innerHTML=""+e.original.value,S.appendChild(t)}))}),x.addEventListener("submit",i),S.addEventListener("click",function(e){S.contains(e.target)&&(B=Array.prototype.indexOf.call(e.target.parentElement.childNodes,e.target),i())}),p.addEventListener("click",function(){O--,a(),i()}),b.addEventListener("click",function(){O++,a(),i()}),m.addEventListener("click",function(){m.select()}),m.addEventListener("blur",function(){var e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);e||(m.selectionStart=m.selectionEnd=-1)}),x.addEventListener("blur",function(e){S.innerHTML=""}),v.addEventListener("click",function(){o(l(n(),w)?!1:!0)});var L=n();L?!function(){w=L,m.value=w.value,h.src=c(O,w.type,w.index+1),s();var e=void 0;switch(w.type){case"c":e="Class";break;case"t":e="Teacher";break;case"r":e="Room";break;case"s":e="Student"}var t=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search fav",eventAction:e,eventLabel:t})})}():""===m.value&&(x.className="no-input",m.focus()),document.body.style="",window.easterEggs=y},{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,diacritics:1,flexibility:2,fuzzy:3}]},{},[8]); +!function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var i="function"==typeof require&&require;if(!a&&i)return i(s,!0);if(l)return l(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var c=r[s]={exports:{}};t[s][0].call(c.exports,function(e){var r=t[s][1][e];return o(r?r:e)},c,c.exports,e,t,r,n)}return r[s].exports}for(var l="function"==typeof require&&require,s=0;s1&&"flex-start"===e.style.alignContent)for(t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;n=e.lines[++o];)n.crossStart=t,n.cross+=r,t+=n.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var n=child.style.alignSelf;"auto"===n&&(n=e.style.alignItems),"flex-start"===n?child.flexStyle.crossStart=line.crossStart:"flex-end"===n?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===n?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function e(t,e){var r="row"===e||"row-reverse"===e,n=t.mainAxis;if(n){var o=r&&"inline"===n||!r&&"block"===n;o||(t.flexStyle={main:t.flexStyle.cross,cross:t.flexStyle.main,mainOffset:t.flexStyle.crossOffset,crossOffset:t.flexStyle.mainOffset,mainBefore:t.flexStyle.crossBefore,mainAfter:t.flexStyle.crossAfter,crossBefore:t.flexStyle.mainBefore,crossAfter:t.flexStyle.mainAfter,mainInnerBefore:t.flexStyle.crossInnerBefore,mainInnerAfter:t.flexStyle.crossInnerAfter,crossInnerBefore:t.flexStyle.mainInnerBefore,crossInnerAfter:t.flexStyle.mainInnerAfter,mainBorderBefore:t.flexStyle.crossBorderBefore,mainBorderAfter:t.flexStyle.crossBorderAfter,crossBorderBefore:t.flexStyle.mainBorderBefore,crossBorderAfter:t.flexStyle.mainBorderAfter})}else r?t.flexStyle={main:t.style.width,cross:t.style.height,mainOffset:t.style.offsetWidth,crossOffset:t.style.offsetHeight,mainBefore:t.style.marginLeft,mainAfter:t.style.marginRight,crossBefore:t.style.marginTop,crossAfter:t.style.marginBottom,mainInnerBefore:t.style.paddingLeft,mainInnerAfter:t.style.paddingRight,crossInnerBefore:t.style.paddingTop,crossInnerAfter:t.style.paddingBottom,mainBorderBefore:t.style.borderLeftWidth,mainBorderAfter:t.style.borderRightWidth,crossBorderBefore:t.style.borderTopWidth,crossBorderAfter:t.style.borderBottomWidth}:t.flexStyle={main:t.style.height,cross:t.style.width,mainOffset:t.style.offsetHeight,crossOffset:t.style.offsetWidth,mainBefore:t.style.marginTop,mainAfter:t.style.marginBottom,crossBefore:t.style.marginLeft,crossAfter:t.style.marginRight,mainInnerBefore:t.style.paddingTop,mainInnerAfter:t.style.paddingBottom,crossInnerBefore:t.style.paddingLeft,crossInnerAfter:t.style.paddingRight,mainBorderBefore:t.style.borderTopWidth,mainBorderAfter:t.style.borderBottomWidth,crossBorderBefore:t.style.borderLeftWidth,crossBorderAfter:t.style.borderRightWidth},"content-box"===t.style.boxSizing&&("number"==typeof t.flexStyle.main&&(t.flexStyle.main+=t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),"number"==typeof t.flexStyle.cross&&(t.flexStyle.cross+=t.flexStyle.crossInnerBefore+t.flexStyle.crossInnerAfter+t.flexStyle.crossBorderBefore+t.flexStyle.crossBorderAfter));t.mainAxis=r?"inline":"block",t.crossAxis=r?"block":"inline","number"==typeof t.style.flexBasis&&(t.flexStyle.main=t.style.flexBasis+t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),t.flexStyle.mainOuter=t.flexStyle.main,t.flexStyle.crossOuter=t.flexStyle.cross,"auto"===t.flexStyle.mainOuter&&(t.flexStyle.mainOuter=t.flexStyle.mainOffset),"auto"===t.flexStyle.crossOuter&&(t.flexStyle.crossOuter=t.flexStyle.crossOffset),"number"==typeof t.flexStyle.mainBefore&&(t.flexStyle.mainOuter+=t.flexStyle.mainBefore),"number"==typeof t.flexStyle.mainAfter&&(t.flexStyle.mainOuter+=t.flexStyle.mainAfter),"number"==typeof t.flexStyle.crossBefore&&(t.flexStyle.crossOuter+=t.flexStyle.crossBefore),"number"==typeof t.flexStyle.crossAfter&&(t.flexStyle.crossOuter+=t.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=n(e.children,function(r,n){return"auto"===n.flexStyle.main?n.flexStyle.main=n.flexStyle.mainOffset+parseFloat(n.style.flexGrow)/t*e.mainSpace:n.flexStyle.main+=parseFloat(n.style.flexGrow)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=n(e.children,function(r,n){return n.flexStyle.main+=parseFloat(n.style.flexShrink)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var n=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,o=-1;r=e.children[++o];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=n(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=n(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function n(t){for(var r,n=-1;r=t.children[++n];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),n=-1;for(var o;o=t.lines[++n];)o.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-o.main,e("./flex-grow")(o),e("./flex-shrink")(o),e("./margin-main")(o),e("./margin-cross")(o),e("./justify-content")(o,t.style.justifyContent,t);e("./align-items")(t)}t.exports=n},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var n,o,l,s=r.flexStyle.mainInnerBefore,a=-1;if("flex-end"===t)for(n=e.mainSpace,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("center"===t)for(n=e.mainSpace/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("space-between"===t)for(o=e.mainSpace/(e.children.length-1),n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else if("space-around"===t)for(o=2*e.mainSpace/(2*e.children.length),n=o/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else for(n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var n=0;"auto"===t.flexStyle.crossBefore&&++n,"auto"===t.flexStyle.crossAfter&&++n;var o=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=o/n),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=o/n),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var n=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),n.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function n(e,t,r){for(var n=e.length,o=-1;++o>=1,!t)break;r+=r}return n+e}t.exports=n;var o=[""," "," "," "," "," "," "," "," "," "]},{}],5:[function(e,t,r){"use strict";var n=function(){console.log("sinterklaas easter egg activated");var e=document.querySelector("#search"),t=e.querySelector('input[type="text"]'),r=document.querySelector(".autocomplete"),n=!1,o=[[{woord:"Hoor ",time:0},{woord:"wie ",time:.3},{woord:"klopt ",time:.6},{woord:"daar ",time:.9},{woord:"kind",time:1.2},{woord:"'ren",time:1.5}],[{woord:"Hoor ",time:1.8},{woord:"wie ",time:2.1},{woord:"klopt ",time:2.5},{woord:"daar ",time:2.8},{woord:"kind",time:3.1},{woord:"'ren",time:3.4}],[{woord:"Hoor ",time:3.7},{woord:"wie ",time:4},{woord:"tikt ",time:4.3},{woord:"daar ",time:4.6},{woord:"zacht",time:4.8},{woord:"jes ",time:5.3},{woord:"tegen ",time:5.5},{woord:"'t ",time:6.1},{woord:"raam ",time:6.2}]],l=t.value;t.value="",t.placeholder="",o.forEach(function(e,r){e.forEach(function(e,s){setTimeout(function(){0===s&&(t.placeholder=""),t.placeholder+=e.woord},1e3*e.time),o.length===r+1&&o[r].length===s+1&&setTimeout(function(){""===t.value&&(t.value=l),t.placeholder="Zoeken",n=!0},1e3*e.time+1e3)})}),t.addEventListener("focus",function(){if(n){r.innerHTML="";var e=["'t Is een vreemd'ling zeker,","die verdwaalt is zeker.","'k Zal eens even vragen naar zijn naam:"];e.forEach(function(e){var t=document.createElement("li");t.innerHTML=e,r.appendChild(t)})}}),t.addEventListener("input",function(){n&&("sint nicolaas"!==t.value.toLowerCase()&&"sintnicolaas"!==t.value.toLowerCase()&&"sint nikolaas"!==t.value.toLowerCase()&&"sintnikolaas"!==t.value.toLowerCase()||(t.value="",window.location.href="https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30"))})};t.exports={sinterklaas:n}},{}],6:[function(e,t,r){"use strict";function n(e,t,r){return"//"+window.location.host+"/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F"+(l()+e+"%2F"+t+"%2F"+t+o(r,5,"0")+".htm")}var o=e("left-pad"),l=e("./getWeek");t.exports=n},{"./getWeek":7,"left-pad":4}],7:[function(e,t,r){"use strict";function n(){var e=new Date,t=(e.getDay()+6)%7;e.setDate(e.getDate()-t+3);var r=e.valueOf();return e.setMonth(0,1),4!==e.getDay()&&e.setMonth(0,1+(4-e.getDay()+7)%7),1+Math.ceil((r-e)/6048e5)}t.exports=n},{}],8:[function(e,t,r){"use strict";function n(){if(window.localStorage.getItem("fav")){var e=window.localStorage.getItem("fav").split(":"),t=USERS.filter(function(t){return t.type===e[0]&&t.index===Number(e[1])});return t[0]}}function o(e){w&&(e?window.localStorage.setItem("fav",w.type+":"+w.index):window.localStorage.removeItem("fav"),s())}function l(e,t){return null!=e&&null!=t&&(e.type===t.type&&e.index===t.index)}function s(){l(n(),w)?v.innerHTML="":v.innerHTML=""}function a(){0===O?g.innerHTML="Week "+(u()+O):g.innerHTML="Week "+(u()+O)+""}function i(e){if(e&&e.preventDefault(),0!==A.length){var t=B===-1?0:B;w=USERS[A[t].index]}if(null!=w){s(),m.value=w.value,S.innerHTML="",m.blur(),h.src=c(O,w.type,w.index+1);var r=void 0;switch(w.type){case"c":r="Class";break;case"t":r="Teacher";break;case"r":r="Room";break;case"s":r="Student"}var n=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search",eventAction:r,eventLabel:n})})}}e("flexibility");var f=e("fuzzy"),c=e("./getURLOfUser"),d=e("diacritics").remove,u=e("./getWeek"),y=e("./easterEggs"),x=document.querySelector("#search"),m=x.querySelector('input[type="text"]'),S=document.querySelector(".autocomplete"),h=document.querySelector("#schedule"),p=document.querySelectorAll('input[type="button"]')[0],b=document.querySelectorAll('input[type="button"]')[1],g=document.querySelector(".current"),v=document.querySelector(".fav");FLAGS.indexOf("NO_FEATURE_DETECT")===-1?document.querySelector("#schedule").getClientRects()[0].bottom!==document.body.getClientRects()[0].bottom?window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/":window.onerror=function(){window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/"}:console.log("feature detection is OFF");var B=-1,w=void 0,A=[],O=0;a(),x.addEventListener("keydown",function(e){if(0!==A.length&&("ArrowDown"===e.key||"ArrowUp"===e.key)){e.preventDefault(),document.querySelector(".selected")&&document.querySelector(".selected").classList.remove("selected");var t="ArrowDown"===e.key?1:-1;B+=t,B<-1?B=A.length-1:B>A.length-1&&(B=-1),B!==-1&&S.children[B].classList.add("selected")}}),x.addEventListener("input",function(e){x.className="",S.innerHTML="",""!==m.value.trim()&&(B=-1,A=f.filter(d(m.value),USERS,{extract:function(e){return d(e.value)}}).slice(0,7),A.forEach(function(e){var t=document.createElement("li");t.innerHTML=""+e.original.value,S.appendChild(t)}))}),x.addEventListener("submit",i),S.addEventListener("click",function(e){S.contains(e.target)&&(B=Array.prototype.indexOf.call(e.target.parentElement.childNodes,e.target),i())}),p.addEventListener("click",function(){O--,a(),i()}),b.addEventListener("click",function(){O++,a(),i()}),m.addEventListener("click",function(){m.select()}),m.addEventListener("blur",function(){var e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);e||(m.selectionStart=m.selectionEnd=-1)}),x.addEventListener("blur",function(e){S.innerHTML=""}),v.addEventListener("click",function(){o(l(n(),w)?!1:!0)});var L=n();L?!function(){w=L,m.value=w.value,h.src=c(O,w.type,w.index+1),s();var e=void 0;switch(w.type){case"c":e="Class";break;case"t":e="Teacher";break;case"r":e="Room";break;case"s":e="Student"}var t=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search fav",eventAction:e,eventLabel:t})})}():""===m.value&&(x.className="no-input",m.focus()),document.body.style.opacity="1",window.easterEggs=y},{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,diacritics:1,flexibility:2,fuzzy:3}]},{},[8]); diff --git a/public/javascripts/main.js b/public/javascripts/main.js index a1e7dcf..3afb896 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -221,6 +221,6 @@ if (currentFav) { inputNode.focus() } -document.body.style = '' +document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From 13a8cb94986970427e4e28a0ed0c5ac8984de293 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Dec 2016 16:23:58 +0100 Subject: don't show begin screen if screen is short --- public/stylesheets/style.css | 164 ++++++++++++++++++++++--------------------- 1 file changed, 83 insertions(+), 81 deletions(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 7ac665f..8151be6 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -208,85 +208,87 @@ ul a { display: none; } -#search.no-input { - height: 100%; - background-color: #ececec; -} - -#search.no-input button { - display: none; -} - -#search.no-input #overflow-button { - position: absolute; - display: block; - top: 0; - right: 0; - color: #757575; -} - -#search.no-input .print-page { - display: none; -} - -#search.no-input #overflow-button:focus { - background-color: inherit; - color: #212121; -} - -#search.no-input .logo { - background-image: url(/icons/mml-logo.png); - background-position: center; - background-repeat: no-repeat; - background-size: contain; - height: 100px; - width: 100px; - - /* virtual center: http://javier.xyz/visual-center/ */ - transform: translate(-8%,-3%); - margin: 0 auto; -} - -#search.no-input .title { - display: block; - font-size: 55px; - padding-bottom: 32px; -} - -#search.no-input .title .text { - text-align: center; - line-height: 55px; -} - -#search.no-input .top-bar { - position: static; - display: block; - margin-top: 50vh; - transform: translateY(-75%); -} - -#search.no-input input[type='text'] { - background-color: #FFF; -} - -/* WebKit, Blink, Edge */ -#search.no-input input::-webkit-input-placeholder { - color: #757575; -} - -/* Mozilla Firefox 4 to 18 */ -#search.no-input input:-moz-placeholder { - color: #757575; - opacity: 1; -} - -/* Mozilla Firefox 19+ */ -#search.no-input input::-moz-placeholder { - color: #757575; - opacity: 1; -} - -/* Internet Explorer 10-11 */ -#search.no-input input:-ms-input-placeholder { - color: #757575; +@media screen and (min-height: 400px) { + #search.no-input { + height: 100%; + background-color: #ececec; + } + + #search.no-input button { + display: none; + } + + #search.no-input #overflow-button { + position: absolute; + display: block; + top: 0; + right: 0; + color: #757575; + } + + #search.no-input .print-page { + display: none; + } + + #search.no-input #overflow-button:focus { + background-color: inherit; + color: #212121; + } + + #search.no-input .logo { + background-image: url(/icons/mml-logo.png); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + height: 100px; + width: 100px; + + /* virtual center: http://javier.xyz/visual-center/ */ + transform: translate(-8%,-3%); + margin: 0 auto; + } + + #search.no-input .title { + display: block; + font-size: 55px; + padding-bottom: 32px; + } + + #search.no-input .title .text { + text-align: center; + line-height: 55px; + } + + #search.no-input .top-bar { + position: static; + display: block; + margin-top: 50vh; + transform: translateY(-75%); + } + + #search.no-input input[type='text'] { + background-color: #FFF; + } + + /* WebKit, Blink, Edge */ + #search.no-input input::-webkit-input-placeholder { + color: #757575; + } + + /* Mozilla Firefox 4 to 18 */ + #search.no-input input:-moz-placeholder { + color: #757575; + opacity: 1; + } + + /* Mozilla Firefox 19+ */ + #search.no-input input::-moz-placeholder { + color: #757575; + opacity: 1; + } + + /* Internet Explorer 10-11 */ + #search.no-input input:-ms-input-placeholder { + color: #757575; + } } \ No newline at end of file -- cgit v1.1 From 2c121179cf97a35cddc294937266ecb00a8927c7 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:30:02 +0100 Subject: changed bundle to dev bundle --- public/javascripts/bundle.js | 864 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 863 insertions(+), 1 deletion(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index d62046d..3af4d81 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -1 +1,863 @@ -!function e(t,r,n){function o(s,a){if(!r[s]){if(!t[s]){var i="function"==typeof require&&require;if(!a&&i)return i(s,!0);if(l)return l(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var c=r[s]={exports:{}};t[s][0].call(c.exports,function(e){var r=t[s][1][e];return o(r?r:e)},c,c.exports,e,t,r,n)}return r[s].exports}for(var l="function"==typeof require&&require,s=0;s1&&"flex-start"===e.style.alignContent)for(t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;n=e.lines[++o];)n.crossStart=t,t+=n.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;n=e.lines[++o];)n.crossStart=t,n.cross+=r,t+=n.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var n=child.style.alignSelf;"auto"===n&&(n=e.style.alignItems),"flex-start"===n?child.flexStyle.crossStart=line.crossStart:"flex-end"===n?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===n?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function e(t,e){var r="row"===e||"row-reverse"===e,n=t.mainAxis;if(n){var o=r&&"inline"===n||!r&&"block"===n;o||(t.flexStyle={main:t.flexStyle.cross,cross:t.flexStyle.main,mainOffset:t.flexStyle.crossOffset,crossOffset:t.flexStyle.mainOffset,mainBefore:t.flexStyle.crossBefore,mainAfter:t.flexStyle.crossAfter,crossBefore:t.flexStyle.mainBefore,crossAfter:t.flexStyle.mainAfter,mainInnerBefore:t.flexStyle.crossInnerBefore,mainInnerAfter:t.flexStyle.crossInnerAfter,crossInnerBefore:t.flexStyle.mainInnerBefore,crossInnerAfter:t.flexStyle.mainInnerAfter,mainBorderBefore:t.flexStyle.crossBorderBefore,mainBorderAfter:t.flexStyle.crossBorderAfter,crossBorderBefore:t.flexStyle.mainBorderBefore,crossBorderAfter:t.flexStyle.mainBorderAfter})}else r?t.flexStyle={main:t.style.width,cross:t.style.height,mainOffset:t.style.offsetWidth,crossOffset:t.style.offsetHeight,mainBefore:t.style.marginLeft,mainAfter:t.style.marginRight,crossBefore:t.style.marginTop,crossAfter:t.style.marginBottom,mainInnerBefore:t.style.paddingLeft,mainInnerAfter:t.style.paddingRight,crossInnerBefore:t.style.paddingTop,crossInnerAfter:t.style.paddingBottom,mainBorderBefore:t.style.borderLeftWidth,mainBorderAfter:t.style.borderRightWidth,crossBorderBefore:t.style.borderTopWidth,crossBorderAfter:t.style.borderBottomWidth}:t.flexStyle={main:t.style.height,cross:t.style.width,mainOffset:t.style.offsetHeight,crossOffset:t.style.offsetWidth,mainBefore:t.style.marginTop,mainAfter:t.style.marginBottom,crossBefore:t.style.marginLeft,crossAfter:t.style.marginRight,mainInnerBefore:t.style.paddingTop,mainInnerAfter:t.style.paddingBottom,crossInnerBefore:t.style.paddingLeft,crossInnerAfter:t.style.paddingRight,mainBorderBefore:t.style.borderTopWidth,mainBorderAfter:t.style.borderBottomWidth,crossBorderBefore:t.style.borderLeftWidth,crossBorderAfter:t.style.borderRightWidth},"content-box"===t.style.boxSizing&&("number"==typeof t.flexStyle.main&&(t.flexStyle.main+=t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),"number"==typeof t.flexStyle.cross&&(t.flexStyle.cross+=t.flexStyle.crossInnerBefore+t.flexStyle.crossInnerAfter+t.flexStyle.crossBorderBefore+t.flexStyle.crossBorderAfter));t.mainAxis=r?"inline":"block",t.crossAxis=r?"block":"inline","number"==typeof t.style.flexBasis&&(t.flexStyle.main=t.style.flexBasis+t.flexStyle.mainInnerBefore+t.flexStyle.mainInnerAfter+t.flexStyle.mainBorderBefore+t.flexStyle.mainBorderAfter),t.flexStyle.mainOuter=t.flexStyle.main,t.flexStyle.crossOuter=t.flexStyle.cross,"auto"===t.flexStyle.mainOuter&&(t.flexStyle.mainOuter=t.flexStyle.mainOffset),"auto"===t.flexStyle.crossOuter&&(t.flexStyle.crossOuter=t.flexStyle.crossOffset),"number"==typeof t.flexStyle.mainBefore&&(t.flexStyle.mainOuter+=t.flexStyle.mainBefore),"number"==typeof t.flexStyle.mainAfter&&(t.flexStyle.mainOuter+=t.flexStyle.mainAfter),"number"==typeof t.flexStyle.crossBefore&&(t.flexStyle.crossOuter+=t.flexStyle.crossBefore),"number"==typeof t.flexStyle.crossAfter&&(t.flexStyle.crossOuter+=t.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=n(e.children,function(r,n){return"auto"===n.flexStyle.main?n.flexStyle.main=n.flexStyle.mainOffset+parseFloat(n.style.flexGrow)/t*e.mainSpace:n.flexStyle.main+=parseFloat(n.style.flexGrow)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var n=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=n(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=n(e.children,function(r,n){return n.flexStyle.main+=parseFloat(n.style.flexShrink)/t*e.mainSpace,n.flexStyle.mainOuter=n.flexStyle.main+n.flexStyle.mainBefore+n.flexStyle.mainAfter,r+n.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var n=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,o=-1;r=e.children[++o];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=n(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=n(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function n(t){for(var r,n=-1;r=t.children[++n];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),n=-1;for(var o;o=t.lines[++n];)o.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-o.main,e("./flex-grow")(o),e("./flex-shrink")(o),e("./margin-main")(o),e("./margin-cross")(o),e("./justify-content")(o,t.style.justifyContent,t);e("./align-items")(t)}t.exports=n},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var n,o,l,s=r.flexStyle.mainInnerBefore,a=-1;if("flex-end"===t)for(n=e.mainSpace,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("center"===t)for(n=e.mainSpace/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter;else if("space-between"===t)for(o=e.mainSpace/(e.children.length-1),n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else if("space-around"===t)for(o=2*e.mainSpace/(2*e.children.length),n=o/2,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter+o;else for(n=0,n+=s;l=e.children[++a];)l.flexStyle.mainStart=n,n+=l.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var n=0;"auto"===t.flexStyle.crossBefore&&++n,"auto"===t.flexStyle.crossAfter&&++n;var o=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=o/n),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=o/n),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(n=-1;t=e.children[++n];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var n=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),n.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function n(e,t,r){for(var n=e.length,o=-1;++o>=1,!t)break;r+=r}return n+e}t.exports=n;var o=[""," "," "," "," "," "," "," "," "," "]},{}],5:[function(e,t,r){"use strict";var n=function(){console.log("sinterklaas easter egg activated");var e=document.querySelector("#search"),t=e.querySelector('input[type="text"]'),r=document.querySelector(".autocomplete"),n=!1,o=[[{woord:"Hoor ",time:0},{woord:"wie ",time:.3},{woord:"klopt ",time:.6},{woord:"daar ",time:.9},{woord:"kind",time:1.2},{woord:"'ren",time:1.5}],[{woord:"Hoor ",time:1.8},{woord:"wie ",time:2.1},{woord:"klopt ",time:2.5},{woord:"daar ",time:2.8},{woord:"kind",time:3.1},{woord:"'ren",time:3.4}],[{woord:"Hoor ",time:3.7},{woord:"wie ",time:4},{woord:"tikt ",time:4.3},{woord:"daar ",time:4.6},{woord:"zacht",time:4.8},{woord:"jes ",time:5.3},{woord:"tegen ",time:5.5},{woord:"'t ",time:6.1},{woord:"raam ",time:6.2}]],l=t.value;t.value="",t.placeholder="",o.forEach(function(e,r){e.forEach(function(e,s){setTimeout(function(){0===s&&(t.placeholder=""),t.placeholder+=e.woord},1e3*e.time),o.length===r+1&&o[r].length===s+1&&setTimeout(function(){""===t.value&&(t.value=l),t.placeholder="Zoeken",n=!0},1e3*e.time+1e3)})}),t.addEventListener("focus",function(){if(n){r.innerHTML="";var e=["'t Is een vreemd'ling zeker,","die verdwaalt is zeker.","'k Zal eens even vragen naar zijn naam:"];e.forEach(function(e){var t=document.createElement("li");t.innerHTML=e,r.appendChild(t)})}}),t.addEventListener("input",function(){n&&("sint nicolaas"!==t.value.toLowerCase()&&"sintnicolaas"!==t.value.toLowerCase()&&"sint nikolaas"!==t.value.toLowerCase()&&"sintnikolaas"!==t.value.toLowerCase()||(t.value="",window.location.href="https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30"))})};t.exports={sinterklaas:n}},{}],6:[function(e,t,r){"use strict";function n(e,t,r){return"//"+window.location.host+"/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F"+(l()+e+"%2F"+t+"%2F"+t+o(r,5,"0")+".htm")}var o=e("left-pad"),l=e("./getWeek");t.exports=n},{"./getWeek":7,"left-pad":4}],7:[function(e,t,r){"use strict";function n(){var e=new Date,t=(e.getDay()+6)%7;e.setDate(e.getDate()-t+3);var r=e.valueOf();return e.setMonth(0,1),4!==e.getDay()&&e.setMonth(0,1+(4-e.getDay()+7)%7),1+Math.ceil((r-e)/6048e5)}t.exports=n},{}],8:[function(e,t,r){"use strict";function n(){if(window.localStorage.getItem("fav")){var e=window.localStorage.getItem("fav").split(":"),t=USERS.filter(function(t){return t.type===e[0]&&t.index===Number(e[1])});return t[0]}}function o(e){w&&(e?window.localStorage.setItem("fav",w.type+":"+w.index):window.localStorage.removeItem("fav"),s())}function l(e,t){return null!=e&&null!=t&&(e.type===t.type&&e.index===t.index)}function s(){l(n(),w)?v.innerHTML="":v.innerHTML=""}function a(){0===O?g.innerHTML="Week "+(u()+O):g.innerHTML="Week "+(u()+O)+""}function i(e){if(e&&e.preventDefault(),0!==A.length){var t=B===-1?0:B;w=USERS[A[t].index]}if(null!=w){s(),m.value=w.value,S.innerHTML="",m.blur(),h.src=c(O,w.type,w.index+1);var r=void 0;switch(w.type){case"c":r="Class";break;case"t":r="Teacher";break;case"r":r="Room";break;case"s":r="Student"}var n=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search",eventAction:r,eventLabel:n})})}}e("flexibility");var f=e("fuzzy"),c=e("./getURLOfUser"),d=e("diacritics").remove,u=e("./getWeek"),y=e("./easterEggs"),x=document.querySelector("#search"),m=x.querySelector('input[type="text"]'),S=document.querySelector(".autocomplete"),h=document.querySelector("#schedule"),p=document.querySelectorAll('input[type="button"]')[0],b=document.querySelectorAll('input[type="button"]')[1],g=document.querySelector(".current"),v=document.querySelector(".fav");FLAGS.indexOf("NO_FEATURE_DETECT")===-1?document.querySelector("#schedule").getClientRects()[0].bottom!==document.body.getClientRects()[0].bottom?window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/":window.onerror=function(){window.location="http://www.meetingpointmco.nl/Roosters-AL/doc/"}:console.log("feature detection is OFF");var B=-1,w=void 0,A=[],O=0;a(),x.addEventListener("keydown",function(e){if(0!==A.length&&("ArrowDown"===e.key||"ArrowUp"===e.key)){e.preventDefault(),document.querySelector(".selected")&&document.querySelector(".selected").classList.remove("selected");var t="ArrowDown"===e.key?1:-1;B+=t,B<-1?B=A.length-1:B>A.length-1&&(B=-1),B!==-1&&S.children[B].classList.add("selected")}}),x.addEventListener("input",function(e){x.className="",S.innerHTML="",""!==m.value.trim()&&(B=-1,A=f.filter(d(m.value),USERS,{extract:function(e){return d(e.value)}}).slice(0,7),A.forEach(function(e){var t=document.createElement("li");t.innerHTML=""+e.original.value,S.appendChild(t)}))}),x.addEventListener("submit",i),S.addEventListener("click",function(e){S.contains(e.target)&&(B=Array.prototype.indexOf.call(e.target.parentElement.childNodes,e.target),i())}),p.addEventListener("click",function(){O--,a(),i()}),b.addEventListener("click",function(){O++,a(),i()}),m.addEventListener("click",function(){m.select()}),m.addEventListener("blur",function(){var e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);e||(m.selectionStart=m.selectionEnd=-1)}),x.addEventListener("blur",function(e){S.innerHTML=""}),v.addEventListener("click",function(){o(l(n(),w)?!1:!0)});var L=n();L?!function(){w=L,m.value=w.value,h.src=c(O,w.type,w.index+1),s();var e=void 0;switch(w.type){case"c":e="Class";break;case"t":e="Teacher";break;case"r":e="Room";break;case"s":e="Student"}var t=w.value;ga(function(){ga("send",{hitType:"event",eventCategory:"search fav",eventAction:e,eventLabel:t})})}():""===m.value&&(x.className="no-input",m.focus()),document.body.style.opacity="1",window.easterEggs=y},{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,diacritics:1,flexibility:2,fuzzy:3}]},{},[8]); +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1&&"flex-start"===e.style.alignContent)for(t=0;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;l=e.lines[++n];)l.crossStart=t,t+=l.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;l=e.lines[++n];)l.crossStart=t,t+=l.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;l=e.lines[++n];)l.crossStart=t,l.cross+=r,t+=l.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var l=child.style.alignSelf;"auto"===l&&(l=e.style.alignItems),"flex-start"===l?child.flexStyle.crossStart=line.crossStart:"flex-end"===l?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===l?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function l(e,l){var t="row"===l||"row-reverse"===l,r=e.mainAxis;if(r){var n=t&&"inline"===r||!t&&"block"===r;n||(e.flexStyle={main:e.flexStyle.cross,cross:e.flexStyle.main,mainOffset:e.flexStyle.crossOffset,crossOffset:e.flexStyle.mainOffset,mainBefore:e.flexStyle.crossBefore,mainAfter:e.flexStyle.crossAfter,crossBefore:e.flexStyle.mainBefore,crossAfter:e.flexStyle.mainAfter,mainInnerBefore:e.flexStyle.crossInnerBefore,mainInnerAfter:e.flexStyle.crossInnerAfter,crossInnerBefore:e.flexStyle.mainInnerBefore,crossInnerAfter:e.flexStyle.mainInnerAfter,mainBorderBefore:e.flexStyle.crossBorderBefore,mainBorderAfter:e.flexStyle.crossBorderAfter,crossBorderBefore:e.flexStyle.mainBorderBefore,crossBorderAfter:e.flexStyle.mainBorderAfter})}else t?e.flexStyle={main:e.style.width,cross:e.style.height,mainOffset:e.style.offsetWidth,crossOffset:e.style.offsetHeight,mainBefore:e.style.marginLeft,mainAfter:e.style.marginRight,crossBefore:e.style.marginTop,crossAfter:e.style.marginBottom,mainInnerBefore:e.style.paddingLeft,mainInnerAfter:e.style.paddingRight,crossInnerBefore:e.style.paddingTop,crossInnerAfter:e.style.paddingBottom,mainBorderBefore:e.style.borderLeftWidth,mainBorderAfter:e.style.borderRightWidth,crossBorderBefore:e.style.borderTopWidth,crossBorderAfter:e.style.borderBottomWidth}:e.flexStyle={main:e.style.height,cross:e.style.width,mainOffset:e.style.offsetHeight,crossOffset:e.style.offsetWidth,mainBefore:e.style.marginTop,mainAfter:e.style.marginBottom,crossBefore:e.style.marginLeft,crossAfter:e.style.marginRight,mainInnerBefore:e.style.paddingTop,mainInnerAfter:e.style.paddingBottom,crossInnerBefore:e.style.paddingLeft,crossInnerAfter:e.style.paddingRight,mainBorderBefore:e.style.borderTopWidth,mainBorderAfter:e.style.borderBottomWidth,crossBorderBefore:e.style.borderLeftWidth,crossBorderAfter:e.style.borderRightWidth},"content-box"===e.style.boxSizing&&("number"==typeof e.flexStyle.main&&(e.flexStyle.main+=e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter),"number"==typeof e.flexStyle.cross&&(e.flexStyle.cross+=e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter));e.mainAxis=t?"inline":"block",e.crossAxis=t?"block":"inline","number"==typeof e.style.flexBasis&&(e.flexStyle.main=e.style.flexBasis+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter),e.flexStyle.mainOuter=e.flexStyle.main,e.flexStyle.crossOuter=e.flexStyle.cross,"auto"===e.flexStyle.mainOuter&&(e.flexStyle.mainOuter=e.flexStyle.mainOffset),"auto"===e.flexStyle.crossOuter&&(e.flexStyle.crossOuter=e.flexStyle.crossOffset),"number"==typeof e.flexStyle.mainBefore&&(e.flexStyle.mainOuter+=e.flexStyle.mainBefore),"number"==typeof e.flexStyle.mainAfter&&(e.flexStyle.mainOuter+=e.flexStyle.mainAfter),"number"==typeof e.flexStyle.crossBefore&&(e.flexStyle.crossOuter+=e.flexStyle.crossBefore),"number"==typeof e.flexStyle.crossAfter&&(e.flexStyle.crossOuter+=e.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var l=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=l(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=l(e.children,function(r,l){return"auto"===l.flexStyle.main?l.flexStyle.main=l.flexStyle.mainOffset+parseFloat(l.style.flexGrow)/t*e.mainSpace:l.flexStyle.main+=parseFloat(l.style.flexGrow)/t*e.mainSpace,l.flexStyle.mainOuter=l.flexStyle.main+l.flexStyle.mainBefore+l.flexStyle.mainAfter,r+l.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var l=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=l(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=l(e.children,function(r,l){return l.flexStyle.main+=parseFloat(l.style.flexShrink)/t*e.mainSpace,l.flexStyle.mainOuter=l.flexStyle.main+l.flexStyle.mainBefore+l.flexStyle.mainAfter,r+l.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var l=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,n=-1;r=e.children[++n];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=l(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=l(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function l(t){for(var r,l=-1;r=t.children[++l];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),l=-1;for(var n;n=t.lines[++l];)n.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-n.main,e("./flex-grow")(n),e("./flex-shrink")(n),e("./margin-main")(n),e("./margin-cross")(n),e("./justify-content")(n,t.style.justifyContent,t);e("./align-items")(t)}t.exports=l},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var l,n,o,f=r.flexStyle.mainInnerBefore,i=-1;if("flex-end"===t)for(l=e.mainSpace,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter;else if("center"===t)for(l=e.mainSpace/2,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter;else if("space-between"===t)for(n=e.mainSpace/(e.children.length-1),l=0,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter+n;else if("space-around"===t)for(n=2*e.mainSpace/(2*e.children.length),l=n/2,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter+n;else for(l=0,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var l=0;"auto"===t.flexStyle.crossBefore&&++l,"auto"===t.flexStyle.crossAfter&&++l;var n=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=n/l),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=n/l),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,l=-1;t=e.children[++l];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(l=-1;t=e.children[++l];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var l=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),l.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function l(e,t,r){for(var l=e.length,n=-1;++nlah' // The rendered string +// , index: 2 // The index of the element in `arr` +// , original: 'blah' // The original element in `arr` +// }] +// +// `opts` is an optional argument bag. Details: +// +// opts = { +// // string to put before a matching character +// pre: '' +// +// // string to put after matching character +// , post: '' +// +// // Optional function. Input is an entry in the given arr`, +// // output should be the string to test `pattern` against. +// // In this example, if `arr = [{crying: 'koala'}]` we would return +// // 'koala'. +// , extract: function(arg) { return arg.crying; } +// } +fuzzy.filter = function(pattern, arr, opts) { + if(!arr || arr.length === 0) { + return []; + } + if (typeof pattern !== 'string') { + return arr; + } + opts = opts || {}; + return arr + .reduce(function(prev, element, idx, arr) { + var str = element; + if(opts.extract) { + str = opts.extract(element); + } + var rendered = fuzzy.match(pattern, str, opts); + if(rendered != null) { + prev[prev.length] = { + string: rendered.rendered + , score: rendered.score + , index: idx + , original: element + }; + } + return prev; + }, []) + + // Sort by score. Browsers are inconsistent wrt stable/unstable + // sorting, so force stable by using the index in the case of tie. + // See http://ofb.net/~sethml/is-sort-stable.html + .sort(function(a,b) { + var compare = b.score - a.score; + if(compare) return compare; + return a.index - b.index; + }); +}; + + +}()); + + +},{}],4:[function(require,module,exports){ +/* This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://www.wtfpl.net/ for more details. */ +'use strict'; +module.exports = leftPad; + +var cache = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ' +]; + +function leftPad (str, len, ch) { + // convert `str` to `string` + str = str + ''; + // `len` is the `pad`'s length now + len = len - str.length; + // doesn't need to pad + if (len <= 0) return str; + // `ch` defaults to `' '` + if (!ch && ch !== 0) ch = ' '; + // convert `ch` to `string` + ch = ch + ''; + // cache common use cases + if (ch === ' ' && len < 10) return cache[len] + str; + // `pad` starts with an empty string + var pad = ''; + // loop + while (true) { + // add `ch` to `pad` if `len` is odd + if (len & 1) pad += ch; + // divide `len` by 2, ditch the remainder + len >>= 1; + // "double" the `ch` so this operation count grows logarithmically on `len` + // each time `ch` is "doubled", the `len` would need to be "doubled" too + // similar to finding a value in binary search tree, hence O(log(n)) + if (len) ch += ch; + // `len` is 0, exit the loop + else break; + } + // pad `str`! + return pad + str; +} + +},{}],5:[function(require,module,exports){ +'use strict'; + +var sinterklaas = function sinterklaas() { + console.log('sinterklaas easter egg activated'); + var searchNode = document.querySelector('#search'); + var inputNode = searchNode.querySelector('input[type="text"]'); + var autocompleteNode = document.querySelector('.autocomplete'); + var autocomplete = false; + var lyrics = [[{ woord: 'Hoor ', time: 0 }, { woord: 'wie ', time: 0.3 }, { woord: 'klopt ', time: 0.6 }, { woord: 'daar ', time: 0.9 }, { woord: 'kind', time: 1.2 }, { woord: '\'ren', time: 1.5 }], [{ woord: 'Hoor ', time: 1.8 }, { woord: 'wie ', time: 2.1 }, { woord: 'klopt ', time: 2.5 }, { woord: 'daar ', time: 2.8 }, { woord: 'kind', time: 3.1 }, { woord: '\'ren', time: 3.4 }], [{ woord: 'Hoor ', time: 3.7 }, { woord: 'wie ', time: 4 }, { woord: 'tikt ', time: 4.3 }, { woord: 'daar ', time: 4.6 }, { woord: 'zacht', time: 4.8 }, { woord: 'jes ', time: 5.3 }, { woord: 'tegen ', time: 5.5 }, { woord: '\'t ', time: 6.1 }, { woord: 'raam ', time: 6.2 }]]; + + var originalValue = inputNode.value; + + inputNode.value = ''; + inputNode.placeholder = ''; + + lyrics.forEach(function (row, rowIndex) { + row.forEach(function (word, wordIndex) { + setTimeout(function () { + if (wordIndex === 0) inputNode.placeholder = ''; + inputNode.placeholder += word.woord; + }, word.time * 1000); + if (lyrics.length === rowIndex + 1 && lyrics[rowIndex].length === wordIndex + 1) { + setTimeout(function () { + if (inputNode.value === '') { + inputNode.value = originalValue; + } + inputNode.placeholder = 'Zoeken'; + autocomplete = true; + }, word.time * 1000 + 1000); + } + }); + }); + + inputNode.addEventListener('focus', function () { + if (!autocomplete) return; + + autocompleteNode.innerHTML = ''; + + var autocompleteLyrics = ['\'t Is een vreemd\'ling zeker,', 'die verdwaalt is zeker.', '\'k Zal eens even vragen naar zijn naam:']; + + autocompleteLyrics.forEach(function (row) { + var resultNode = document.createElement('li'); + resultNode.innerHTML = row; + autocompleteNode.appendChild(resultNode); + }); + }); + + inputNode.addEventListener('input', function () { + if (!autocomplete) return; + if (inputNode.value.toLowerCase() === 'sint nicolaas' || inputNode.value.toLowerCase() === 'sintnicolaas' || inputNode.value.toLowerCase() === 'sint nikolaas' || inputNode.value.toLowerCase() === 'sintnikolaas') { + inputNode.value = ''; + window.location.href = 'https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30'; + } + }); +}; + +module.exports = { sinterklaas: sinterklaas }; + +},{}],6:[function(require,module,exports){ +'use strict'; + +var leftPad = require('left-pad'); +var getWeek = require('./getWeek'); + +function getURLOfUsers(weekOffset, type, id) { + return '//' + window.location.host + '/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F' + (getWeek() + weekOffset + '%2F' + type + '%2F' + type + leftPad(id, 5, '0') + '.htm'); +} + +module.exports = getURLOfUsers; + +},{"./getWeek":7,"left-pad":4}],7:[function(require,module,exports){ +"use strict"; + +// copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js, +// were using the same code as they do to be sure that we always get the same +// week number. +function getWeek() { + // Create a copy of this date object + var target = new Date(); + + // ISO week date weeks start on monday + // so correct the day number + var dayNr = (target.getDay() + 6) % 7; + + // ISO 8601 states that week 1 is the week + // with the first thursday of that year. + // Set the target date to the thursday in the target week + target.setDate(target.getDate() - dayNr + 3); + + // Store the millisecond value of the target date + var firstThursday = target.valueOf(); + + // Set the target to the first thursday of the year + // First set the target to january first + target.setMonth(0, 1); + // Not a thursday? Correct the date to the next thursday + if (target.getDay() !== 4) { + target.setMonth(0, 1 + (4 - target.getDay() + 7) % 7); + } + + // The weeknumber is the number of weeks between the + // first thursday of the year and the thursday in the target week + return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000 +} + +module.exports = getWeek; + +},{}],8:[function(require,module,exports){ +'use strict'; + +/* global ga FLAGS USERS */ + +require('flexibility'); + +var fuzzy = require('fuzzy'); +// const getUsers = require('./getUsers') +var getURLOfUser = require('./getURLOfUser'); +var removeDiacritics = require('diacritics').remove; +var getWeek = require('./getWeek'); +var easterEggs = require('./easterEggs'); + +var searchNode = document.querySelector('#search'); +var inputNode = searchNode.querySelector('input[type="text"]'); +var autocompleteNode = document.querySelector('.autocomplete'); +var scheduleIframe = document.querySelector('#schedule'); +var prevButton = document.querySelectorAll('input[type="button"]')[0]; +var nextButton = document.querySelectorAll('input[type="button"]')[1]; +var currentWeekNode = document.querySelector('.current'); +var favNode = document.querySelector('.fav'); + +if (FLAGS.indexOf('NO_FEATURE_DETECT') === -1) { + if (document.querySelector('#schedule').getClientRects()[0].bottom !== document.body.getClientRects()[0].bottom) { + window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; + } else { + window.onerror = function () { + window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; + }; + } +} else { + console.log('feature detection is OFF'); +} + +var selectedResult = -1; +var selectedUser = void 0; +var results = []; +var offset = 0; + +function getCurrentFav() { + if (!window.localStorage.getItem('fav')) return; + var favCode = window.localStorage.getItem('fav').split(':'); + var fav = USERS.filter(function (user) { + return user.type === favCode[0] && user.index === Number(favCode[1]); + }); + return fav[0]; +} + +function changeFav(isFav) { + if (!selectedUser) return; + if (isFav) { + window.localStorage.setItem('fav', selectedUser.type + ':' + selectedUser.index); + } else { + window.localStorage.removeItem('fav'); + } + updateFavNode(); +} + +function usersEqual(user1, user2) { + if (user1 == null || user2 == null) return false; + return user1.type === user2.type && user1.index === user2.index; +} + +function updateFavNode() { + if (usersEqual(getCurrentFav(), selectedUser)) { + favNode.innerHTML = ''; + } else { + favNode.innerHTML = ''; + } +} + +function updateWeekText() { + if (offset === 0) currentWeekNode.innerHTML = 'Week ' + (getWeek() + offset);else currentWeekNode.innerHTML = 'Week ' + (getWeek() + offset) + ''; +} + +updateWeekText(); + +searchNode.addEventListener('keydown', function (e) { + if (results.length !== 0 && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) { + e.preventDefault(); + + if (document.querySelector('.selected')) document.querySelector('.selected').classList.remove('selected'); + + var change = e.key === 'ArrowDown' ? 1 : -1; + selectedResult += change; + if (selectedResult < -1) selectedResult = results.length - 1;else if (selectedResult > results.length - 1) selectedResult = -1; + + if (selectedResult !== -1) autocompleteNode.children[selectedResult].classList.add('selected'); + } +}); + +searchNode.addEventListener('input', function (e) { + searchNode.className = ''; + autocompleteNode.innerHTML = ''; + if (inputNode.value.trim() === '') return; + + selectedResult = -1; + results = fuzzy.filter(removeDiacritics(inputNode.value), USERS, { + extract: function extract(el) { + return removeDiacritics(el.value); + } + }).slice(0, 7); + + results.forEach(function (result) { + var resultNode = document.createElement('li'); + resultNode.innerHTML = '' + result.original.value; + autocompleteNode.appendChild(resultNode); + }); +}); + +searchNode.addEventListener('submit', submitForm); + +function submitForm(e) { + if (e) e.preventDefault(); + if (results.length !== 0) { + var indexInResult = selectedResult === -1 ? 0 : selectedResult; + selectedUser = USERS[results[indexInResult].index]; + } + if (selectedUser == null) return; + + updateFavNode(); + + inputNode.value = selectedUser.value; + autocompleteNode.innerHTML = ''; + + inputNode.blur(); + + scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); + + var eventAction = void 0; + switch (selectedUser.type) { + case 'c': + eventAction = 'Class'; + break; + case 't': + eventAction = 'Teacher'; + break; + case 'r': + eventAction = 'Room'; + break; + case 's': + eventAction = 'Student'; + break; + } + var eventLabel = selectedUser.value; + + ga(function () { + ga('send', { hitType: 'event', eventCategory: 'search', eventAction: eventAction, eventLabel: eventLabel }); + }); +} + +autocompleteNode.addEventListener('click', function (e) { + if (autocompleteNode.contains(e.target)) { + selectedResult = Array.prototype.indexOf.call(e.target.parentElement.childNodes, e.target); + submitForm(); + } +}); + +prevButton.addEventListener('click', function () { + offset--; + updateWeekText(); + submitForm(); +}); + +nextButton.addEventListener('click', function () { + offset++; + updateWeekText(); + submitForm(); +}); + +inputNode.addEventListener('click', function () { + inputNode.select(); +}); + +inputNode.addEventListener('blur', function () { + var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + if (!isSafari) { + inputNode.selectionStart = inputNode.selectionEnd = -1; + } +}); + +searchNode.addEventListener('blur', function (e) { + autocompleteNode.innerHTML = ''; +}); + +favNode.addEventListener('click', function () { + if (usersEqual(getCurrentFav(), selectedUser)) { + changeFav(false); + } else { + changeFav(true); + } +}); + +var currentFav = getCurrentFav(); + +if (currentFav) { + (function () { + selectedUser = currentFav; + inputNode.value = selectedUser.value; + scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); + updateFavNode(); + + var eventAction = void 0; + switch (selectedUser.type) { + case 'c': + eventAction = 'Class'; + break; + case 't': + eventAction = 'Teacher'; + break; + case 'r': + eventAction = 'Room'; + break; + case 's': + eventAction = 'Student'; + break; + } + var eventLabel = selectedUser.value; + + ga(function () { + ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction: eventAction, eventLabel: eventLabel }); + }); + })(); +} else if (inputNode.value === '') { + searchNode.className = 'no-input'; + inputNode.focus(); +} + +document.body.style.opacity = '1'; + +window.easterEggs = easterEggs; + +},{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwREEsSUFBTSxjQUFjLFNBQWQsV0FBYyxHQUFZO0FBQzlCLFVBQVEsR0FBUixDQUFZLGtDQUFaO0FBQ0EsTUFBTSxhQUFhLFNBQVMsYUFBVCxDQUF1QixTQUF2QixDQUFuQjtBQUNBLE1BQU0sWUFBWSxXQUFXLGFBQVgsQ0FBeUIsb0JBQXpCLENBQWxCO0FBQ0EsTUFBTSxtQkFBbUIsU0FBUyxhQUFULENBQXVCLGVBQXZCLENBQXpCO0FBQ0EsTUFBSSxlQUFlLEtBQW5CO0FBQ0EsTUFBTSxTQUFTLENBQ2IsQ0FDRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLENBQXZCLEVBREYsRUFFRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBRkYsRUFHRSxFQUFDLE9BQU8sUUFBUixFQUFrQixNQUFNLEdBQXhCLEVBSEYsRUFJRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSkYsRUFLRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBTEYsRUFNRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBTkYsQ0FEYSxFQVNiLENBQ0UsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQURGLEVBRUUsRUFBQyxPQUFPLE1BQVIsRUFBZ0IsTUFBTSxHQUF0QixFQUZGLEVBR0UsRUFBQyxPQUFPLFFBQVIsRUFBa0IsTUFBTSxHQUF4QixFQUhGLEVBSUUsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQUpGLEVBS0UsRUFBQyxPQUFPLE1BQVIsRUFBZ0IsTUFBTSxHQUF0QixFQUxGLEVBTUUsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQU5GLENBVGEsRUFpQmIsQ0FDRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBREYsRUFFRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLENBQXRCLEVBRkYsRUFHRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSEYsRUFJRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSkYsRUFLRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBTEYsRUFNRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBTkYsRUFPRSxFQUFDLE9BQU8sUUFBUixFQUFrQixNQUFNLEdBQXhCLEVBUEYsRUFRRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBUkYsRUFTRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBVEYsQ0FqQmEsQ0FBZjs7QUE4QkEsTUFBTSxnQkFBZ0IsVUFBVSxLQUFoQzs7QUFFQSxZQUFVLEtBQVYsR0FBa0IsRUFBbEI7QUFDQSxZQUFVLFdBQVYsR0FBd0IsRUFBeEI7O0FBRUEsU0FBTyxPQUFQLENBQWUsVUFBQyxHQUFELEVBQU0sUUFBTixFQUFtQjtBQUNoQyxRQUFJLE9BQUosQ0FBWSxVQUFDLElBQUQsRUFBTyxTQUFQLEVBQXFCO0FBQy9CLGlCQUFXLFlBQVk7QUFDckIsWUFBSSxjQUFjLENBQWxCLEVBQXFCLFVBQVUsV0FBVixHQUF3QixFQUF4QjtBQUNyQixrQkFBVSxXQUFWLElBQXlCLEtBQUssS0FBOUI7QUFDRCxPQUhELEVBR0csS0FBSyxJQUFMLEdBQVksSUFIZjtBQUlBLFVBQUksT0FBTyxNQUFQLEtBQWtCLFdBQVcsQ0FBN0IsSUFDQSxPQUFPLFFBQVAsRUFBaUIsTUFBakIsS0FBNEIsWUFBWSxDQUQ1QyxFQUMrQztBQUM3QyxtQkFBVyxZQUFZO0FBQ3JCLGNBQUksVUFBVSxLQUFWLEtBQW9CLEVBQXhCLEVBQTRCO0FBQzFCLHNCQUFVLEtBQVYsR0FBa0IsYUFBbEI7QUFDRDtBQUNELG9CQUFVLFdBQVYsR0FBd0IsUUFBeEI7QUFDQSx5QkFBZSxJQUFmO0FBQ0QsU0FORCxFQU1HLEtBQUssSUFBTCxHQUFZLElBQVosR0FBbUIsSUFOdEI7QUFPRDtBQUNGLEtBZkQ7QUFnQkQsR0FqQkQ7O0FBbUJBLFlBQVUsZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0MsWUFBWTtBQUM5QyxRQUFJLENBQUMsWUFBTCxFQUFtQjs7QUFFbkIscUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUVBLFFBQU0scUJBQXFCLHlHQUEzQjs7QUFNQSx1QkFBbUIsT0FBbkIsQ0FBMkIsZUFBTztBQUNoQyxVQUFNLGFBQWEsU0FBUyxhQUFULENBQXVCLElBQXZCLENBQW5CO0FBQ0EsaUJBQVcsU0FBWCxHQUF1QixHQUF2QjtBQUNBLHVCQUFpQixXQUFqQixDQUE2QixVQUE3QjtBQUNELEtBSkQ7QUFLRCxHQWhCRDs7QUFrQkEsWUFBVSxnQkFBVixDQUEyQixPQUEzQixFQUFvQyxZQUFZO0FBQzlDLFFBQUksQ0FBQyxZQUFMLEVBQW1CO0FBQ25CLFFBQUksVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGVBQWxDLElBQ0EsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGNBRGxDLElBRUEsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGVBRmxDLElBR0EsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGNBSHRDLEVBR3NEO0FBQ3BELGdCQUFVLEtBQVYsR0FBa0IsRUFBbEI7QUFDQSxhQUFPLFFBQVAsQ0FBZ0IsSUFBaEIsR0FBdUIsNkRBQXZCO0FBQ0Q7QUFDRixHQVREO0FBVUQsQ0F4RkQ7O0FBMEZBLE9BQU8sT0FBUCxHQUFpQixFQUFFLHdCQUFGLEVBQWpCOzs7OztBQzFGQSxJQUFJLFVBQVUsUUFBUSxVQUFSLENBQWQ7QUFDQSxJQUFJLFVBQVUsUUFBUSxXQUFSLENBQWQ7O0FBRUEsU0FBUyxhQUFULENBQXdCLFVBQXhCLEVBQW9DLElBQXBDLEVBQTBDLEVBQTFDLEVBQThDO0FBQzVDLFNBQU8sT0FBSyxPQUFPLFFBQVAsQ0FBZ0IsSUFBckIsOERBQ0MsWUFBWSxVQURiLFdBQzhCLElBRDlCLFdBQ3dDLElBRHhDLEdBQytDLFFBQVEsRUFBUixFQUFZLENBQVosRUFBZSxHQUFmLENBRC9DLFVBQVA7QUFFRDs7QUFFRCxPQUFPLE9BQVAsR0FBaUIsYUFBakI7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxPQUFULEdBQW9CO0FBQ2xCO0FBQ0EsTUFBTSxTQUFTLElBQUksSUFBSixFQUFmOztBQUVBO0FBQ0E7QUFDQSxNQUFNLFFBQVEsQ0FBQyxPQUFPLE1BQVAsS0FBa0IsQ0FBbkIsSUFBd0IsQ0FBdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBTyxPQUFQLENBQWUsT0FBTyxPQUFQLEtBQW1CLEtBQW5CLEdBQTJCLENBQTFDOztBQUVBO0FBQ0EsTUFBTSxnQkFBZ0IsT0FBTyxPQUFQLEVBQXRCOztBQUVBO0FBQ0E7QUFDQSxTQUFPLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkI7QUFDQTtBQUNBLE1BQUksT0FBTyxNQUFQLE9BQW9CLENBQXhCLEVBQTJCO0FBQ3pCLFdBQU8sUUFBUCxDQUFnQixDQUFoQixFQUFtQixJQUFJLENBQUUsSUFBSSxPQUFPLE1BQVAsRUFBTCxHQUF3QixDQUF6QixJQUE4QixDQUFyRDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxTQUFPLElBQUksS0FBSyxJQUFMLENBQVUsQ0FBQyxnQkFBZ0IsTUFBakIsSUFBMkIsU0FBckMsQ0FBWCxDQTFCa0IsQ0EwQnlDO0FBQzVEOztBQUVELE9BQU8sT0FBUCxHQUFpQixPQUFqQjs7Ozs7QUNoQ0E7O0FBRUEsUUFBUSxhQUFSOztBQUVBLElBQU0sUUFBUSxRQUFRLE9BQVIsQ0FBZDtBQUNBO0FBQ0EsSUFBTSxlQUFlLFFBQVEsZ0JBQVIsQ0FBckI7QUFDQSxJQUFNLG1CQUFtQixRQUFRLFlBQVIsRUFBc0IsTUFBL0M7QUFDQSxJQUFNLFVBQVUsUUFBUSxXQUFSLENBQWhCO0FBQ0EsSUFBTSxhQUFhLFFBQVEsY0FBUixDQUFuQjs7QUFFQSxJQUFNLGFBQWEsU0FBUyxhQUFULENBQXVCLFNBQXZCLENBQW5CO0FBQ0EsSUFBTSxZQUFZLFdBQVcsYUFBWCxDQUF5QixvQkFBekIsQ0FBbEI7QUFDQSxJQUFNLG1CQUFtQixTQUFTLGFBQVQsQ0FBdUIsZUFBdkIsQ0FBekI7QUFDQSxJQUFNLGlCQUFpQixTQUFTLGFBQVQsQ0FBdUIsV0FBdkIsQ0FBdkI7QUFDQSxJQUFNLGFBQWEsU0FBUyxnQkFBVCxDQUEwQixzQkFBMUIsRUFBa0QsQ0FBbEQsQ0FBbkI7QUFDQSxJQUFNLGFBQWEsU0FBUyxnQkFBVCxDQUEwQixzQkFBMUIsRUFBa0QsQ0FBbEQsQ0FBbkI7QUFDQSxJQUFNLGtCQUFrQixTQUFTLGFBQVQsQ0FBdUIsVUFBdkIsQ0FBeEI7QUFDQSxJQUFNLFVBQVUsU0FBUyxhQUFULENBQXVCLE1BQXZCLENBQWhCOztBQUVBLElBQUksTUFBTSxPQUFOLENBQWMsbUJBQWQsTUFBdUMsQ0FBQyxDQUE1QyxFQUErQztBQUM3QyxNQUFJLFNBQVMsYUFBVCxDQUF1QixXQUF2QixFQUFvQyxjQUFwQyxHQUFxRCxDQUFyRCxFQUF3RCxNQUF4RCxLQUNBLFNBQVMsSUFBVCxDQUFjLGNBQWQsR0FBK0IsQ0FBL0IsRUFBa0MsTUFEdEMsRUFDOEM7QUFDNUMsV0FBTyxRQUFQLEdBQWtCLGdEQUFsQjtBQUNELEdBSEQsTUFHTztBQUNMLFdBQU8sT0FBUCxHQUFpQixZQUFZO0FBQzNCLGFBQU8sUUFBUCxHQUFrQixnREFBbEI7QUFDRCxLQUZEO0FBR0Q7QUFDRixDQVRELE1BU087QUFDTCxVQUFRLEdBQVIsQ0FBWSwwQkFBWjtBQUNEOztBQUVELElBQUksaUJBQWlCLENBQUMsQ0FBdEI7QUFDQSxJQUFJLHFCQUFKO0FBQ0EsSUFBSSxVQUFVLEVBQWQ7QUFDQSxJQUFJLFNBQVMsQ0FBYjs7QUFFQSxTQUFTLGFBQVQsR0FBMEI7QUFDeEIsTUFBSSxDQUFDLE9BQU8sWUFBUCxDQUFvQixPQUFwQixDQUE0QixLQUE1QixDQUFMLEVBQXlDO0FBQ3pDLE1BQU0sVUFBVSxPQUFPLFlBQVAsQ0FBb0IsT0FBcEIsQ0FBNEIsS0FBNUIsRUFBbUMsS0FBbkMsQ0FBeUMsR0FBekMsQ0FBaEI7QUFDQSxNQUFNLE1BQU0sTUFBTSxNQUFOLENBQWE7QUFBQSxXQUFRLEtBQUssSUFBTCxLQUFjLFFBQVEsQ0FBUixDQUFkLElBQTRCLEtBQUssS0FBTCxLQUFlLE9BQU8sUUFBUSxDQUFSLENBQVAsQ0FBbkQ7QUFBQSxHQUFiLENBQVo7QUFDQSxTQUFPLElBQUksQ0FBSixDQUFQO0FBQ0Q7O0FBRUQsU0FBUyxTQUFULENBQW9CLEtBQXBCLEVBQTJCO0FBQ3pCLE1BQUksQ0FBQyxZQUFMLEVBQW1CO0FBQ25CLE1BQUksS0FBSixFQUFXO0FBQ1QsV0FBTyxZQUFQLENBQW9CLE9BQXBCLENBQTRCLEtBQTVCLEVBQW1DLGFBQWEsSUFBYixHQUFvQixHQUFwQixHQUEwQixhQUFhLEtBQTFFO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBTyxZQUFQLENBQW9CLFVBQXBCLENBQStCLEtBQS9CO0FBQ0Q7QUFDRDtBQUNEOztBQUVELFNBQVMsVUFBVCxDQUFxQixLQUFyQixFQUE0QixLQUE1QixFQUFtQztBQUNqQyxNQUFJLFNBQVMsSUFBVCxJQUFpQixTQUFTLElBQTlCLEVBQW9DLE9BQU8sS0FBUDtBQUNwQyxTQUFPLE1BQU0sSUFBTixLQUFlLE1BQU0sSUFBckIsSUFBNkIsTUFBTSxLQUFOLEtBQWdCLE1BQU0sS0FBMUQ7QUFDRDs7QUFFRCxTQUFTLGFBQVQsR0FBMEI7QUFDeEIsTUFBSSxXQUFXLGVBQVgsRUFBNEIsWUFBNUIsQ0FBSixFQUErQztBQUM3QyxZQUFRLFNBQVIsR0FBb0IsVUFBcEI7QUFDRCxHQUZELE1BRU87QUFDTCxZQUFRLFNBQVIsR0FBb0IsU0FBcEI7QUFDRDtBQUNGOztBQUVELFNBQVMsY0FBVCxHQUEyQjtBQUN6QixNQUFJLFdBQVcsQ0FBZixFQUFrQixnQkFBZ0IsU0FBaEIsY0FBb0MsWUFBWSxNQUFoRCxFQUFsQixLQUNLLGdCQUFnQixTQUFoQixzQkFBNEMsWUFBWSxNQUF4RDtBQUNOOztBQUVEOztBQUVBLFdBQVcsZ0JBQVgsQ0FBNEIsU0FBNUIsRUFBdUMsVUFBVSxDQUFWLEVBQWE7QUFDbEQsTUFBSyxRQUFRLE1BQVIsS0FBbUIsQ0FBcEIsS0FBMkIsRUFBRSxHQUFGLEtBQVUsV0FBVixJQUF5QixFQUFFLEdBQUYsS0FBVSxTQUE5RCxDQUFKLEVBQThFO0FBQzVFLE1BQUUsY0FBRjs7QUFFQSxRQUFJLFNBQVMsYUFBVCxDQUF1QixXQUF2QixDQUFKLEVBQXlDLFNBQVMsYUFBVCxDQUF1QixXQUF2QixFQUFvQyxTQUFwQyxDQUE4QyxNQUE5QyxDQUFxRCxVQUFyRDs7QUFFekMsUUFBTSxTQUFTLEVBQUUsR0FBRixLQUFVLFdBQVYsR0FBd0IsQ0FBeEIsR0FBNEIsQ0FBQyxDQUE1QztBQUNBLHNCQUFrQixNQUFsQjtBQUNBLFFBQUksaUJBQWlCLENBQUMsQ0FBdEIsRUFBeUIsaUJBQWlCLFFBQVEsTUFBUixHQUFpQixDQUFsQyxDQUF6QixLQUNLLElBQUksaUJBQWlCLFFBQVEsTUFBUixHQUFpQixDQUF0QyxFQUF5QyxpQkFBaUIsQ0FBQyxDQUFsQjs7QUFFOUMsUUFBSSxtQkFBbUIsQ0FBQyxDQUF4QixFQUEyQixpQkFBaUIsUUFBakIsQ0FBMEIsY0FBMUIsRUFBMEMsU0FBMUMsQ0FBb0QsR0FBcEQsQ0FBd0QsVUFBeEQ7QUFDNUI7QUFDRixDQWJEOztBQWVBLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsVUFBVSxDQUFWLEVBQWE7QUFDaEQsYUFBVyxTQUFYLEdBQXVCLEVBQXZCO0FBQ0EsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCO0FBQ0EsTUFBSSxVQUFVLEtBQVYsQ0FBZ0IsSUFBaEIsT0FBMkIsRUFBL0IsRUFBbUM7O0FBRW5DLG1CQUFpQixDQUFDLENBQWxCO0FBQ0EsWUFBVSxNQUFNLE1BQU4sQ0FBYSxpQkFBaUIsVUFBVSxLQUEzQixDQUFiLEVBQWdELEtBQWhELEVBQXVEO0FBQy9ELGFBQVMsaUJBQVUsRUFBVixFQUFjO0FBQUUsYUFBTyxpQkFBaUIsR0FBRyxLQUFwQixDQUFQO0FBQW1DO0FBREcsR0FBdkQsRUFFUCxLQUZPLENBRUQsQ0FGQyxFQUVFLENBRkYsQ0FBVjs7QUFJQSxVQUFRLE9BQVIsQ0FBZ0IsVUFBVSxNQUFWLEVBQWtCO0FBQ2hDLFFBQU0sYUFBYSxTQUFTLGFBQVQsQ0FBdUIsSUFBdkIsQ0FBbkI7QUFDQSxlQUFXLFNBQVgsUUFBMEIsT0FBTyxRQUFQLENBQWdCLEtBQTFDO0FBQ0EscUJBQWlCLFdBQWpCLENBQTZCLFVBQTdCO0FBQ0QsR0FKRDtBQUtELENBZkQ7O0FBaUJBLFdBQVcsZ0JBQVgsQ0FBNEIsUUFBNUIsRUFBc0MsVUFBdEM7O0FBRUEsU0FBUyxVQUFULENBQXFCLENBQXJCLEVBQXdCO0FBQ3RCLE1BQUksQ0FBSixFQUFPLEVBQUUsY0FBRjtBQUNQLE1BQUksUUFBUSxNQUFSLEtBQW1CLENBQXZCLEVBQTBCO0FBQ3hCLFFBQU0sZ0JBQWdCLG1CQUFtQixDQUFDLENBQXBCLEdBQXdCLENBQXhCLEdBQTRCLGNBQWxEO0FBQ0EsbUJBQWUsTUFBTSxRQUFRLGFBQVIsRUFBdUIsS0FBN0IsQ0FBZjtBQUNEO0FBQ0QsTUFBSSxnQkFBZ0IsSUFBcEIsRUFBMEI7O0FBRTFCOztBQUVBLFlBQVUsS0FBVixHQUFrQixhQUFhLEtBQS9CO0FBQ0EsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUVBLFlBQVUsSUFBVjs7QUFFQSxpQkFBZSxHQUFmLEdBQXFCLGFBQWEsTUFBYixFQUFxQixhQUFhLElBQWxDLEVBQXdDLGFBQWEsS0FBYixHQUFxQixDQUE3RCxDQUFyQjs7QUFFQSxNQUFJLG9CQUFKO0FBQ0EsVUFBUSxhQUFhLElBQXJCO0FBQ0UsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsT0FBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsU0FBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsTUFBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxNQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxLQUFHLFlBQVk7QUFDYixPQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFFBQW5DLEVBQTZDLHdCQUE3QyxFQUEwRCxzQkFBMUQsRUFBWDtBQUNELEdBRkQ7QUFHRDs7QUFFRCxpQkFBaUIsZ0JBQWpCLENBQWtDLE9BQWxDLEVBQTJDLFVBQVUsQ0FBVixFQUFhO0FBQ3RELE1BQUksaUJBQWlCLFFBQWpCLENBQTBCLEVBQUUsTUFBNUIsQ0FBSixFQUF5QztBQUN2QyxxQkFBaUIsTUFBTSxTQUFOLENBQWdCLE9BQWhCLENBQXdCLElBQXhCLENBQTZCLEVBQUUsTUFBRixDQUFTLGFBQVQsQ0FBdUIsVUFBcEQsRUFBZ0UsRUFBRSxNQUFsRSxDQUFqQjtBQUNBO0FBQ0Q7QUFDRixDQUxEOztBQU9BLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDRCxDQUpEOztBQU1BLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDRCxDQUpEOztBQU1BLFVBQVUsZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0MsWUFBWTtBQUM5QyxZQUFVLE1BQVY7QUFDRCxDQUZEOztBQUlBLFVBQVUsZ0JBQVYsQ0FBMkIsTUFBM0IsRUFBbUMsWUFBWTtBQUM3QyxNQUFNLFdBQVcsaUNBQWlDLElBQWpDLENBQXNDLFVBQVUsU0FBaEQsQ0FBakI7QUFDQSxNQUFJLENBQUMsUUFBTCxFQUFlO0FBQ2IsY0FBVSxjQUFWLEdBQTJCLFVBQVUsWUFBVixHQUF5QixDQUFDLENBQXJEO0FBQ0Q7QUFDRixDQUxEOztBQU9BLFdBQVcsZ0JBQVgsQ0FBNEIsTUFBNUIsRUFBb0MsVUFBVSxDQUFWLEVBQWE7QUFDL0MsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCO0FBQ0QsQ0FGRDs7QUFJQSxRQUFRLGdCQUFSLENBQXlCLE9BQXpCLEVBQWtDLFlBQVk7QUFDNUMsTUFBSSxXQUFXLGVBQVgsRUFBNEIsWUFBNUIsQ0FBSixFQUErQztBQUM3QyxjQUFVLEtBQVY7QUFDRCxHQUZELE1BRU87QUFDTCxjQUFVLElBQVY7QUFDRDtBQUNGLENBTkQ7O0FBUUEsSUFBTSxhQUFhLGVBQW5COztBQUVBLElBQUksVUFBSixFQUFnQjtBQUFBO0FBQ2QsbUJBQWUsVUFBZjtBQUNBLGNBQVUsS0FBVixHQUFrQixhQUFhLEtBQS9CO0FBQ0EsbUJBQWUsR0FBZixHQUFxQixhQUFhLE1BQWIsRUFBcUIsYUFBYSxJQUFsQyxFQUF3QyxhQUFhLEtBQWIsR0FBcUIsQ0FBN0QsQ0FBckI7QUFDQTs7QUFFQSxRQUFJLG9CQUFKO0FBQ0EsWUFBUSxhQUFhLElBQXJCO0FBQ0UsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsT0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsTUFBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxRQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxPQUFHLFlBQVk7QUFDYixTQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFlBQW5DLEVBQWlELHdCQUFqRCxFQUE4RCxzQkFBOUQsRUFBWDtBQUNELEtBRkQ7QUF2QmM7QUEwQmYsQ0ExQkQsTUEwQk8sSUFBSSxVQUFVLEtBQVYsS0FBb0IsRUFBeEIsRUFBNEI7QUFDakMsYUFBVyxTQUFYLEdBQXVCLFVBQXZCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixPQUFwQixHQUE4QixHQUE5Qjs7QUFFQSxPQUFPLFVBQVAsR0FBb0IsVUFBcEIiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgc2VhcmNoTm9kZS5jbGFzc05hbWUgPSAnJ1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG4gIGlmIChpbnB1dE5vZGUudmFsdWUudHJpbSgpID09PSAnJykgcmV0dXJuXG5cbiAgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuICByZXN1bHRzID0gZnV6enkuZmlsdGVyKHJlbW92ZURpYWNyaXRpY3MoaW5wdXROb2RlLnZhbHVlKSwgVVNFUlMsIHtcbiAgICBleHRyYWN0OiBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZURpYWNyaXRpY3MoZWwudmFsdWUpIH1cbiAgfSkuc2xpY2UoMCwgNylcblxuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSBgJHtyZXN1bHQub3JpZ2luYWwudmFsdWV9YFxuICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgfSlcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgc3VibWl0Rm9ybSlcblxuZnVuY3Rpb24gc3VibWl0Rm9ybSAoZSkge1xuICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGluZGV4SW5SZXN1bHQgPSBzZWxlY3RlZFJlc3VsdCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRSZXN1bHRcbiAgICBzZWxlY3RlZFVzZXIgPSBVU0VSU1tyZXN1bHRzW2luZGV4SW5SZXN1bHRdLmluZGV4XVxuICB9XG4gIGlmIChzZWxlY3RlZFVzZXIgPT0gbnVsbCkgcmV0dXJuXG5cbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICBpbnB1dE5vZGUuYmx1cigpXG5cbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoJywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuYXV0b2NvbXBsZXRlTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gIGlmIChhdXRvY29tcGxldGVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgIHNlbGVjdGVkUmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMsIGUudGFyZ2V0KVxuICAgIHN1Ym1pdEZvcm0oKVxuICB9XG59KVxuXG5wcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQtLVxuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxubmV4dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0KytcbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaW5wdXROb2RlLnNlbGVjdCgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaXNTYWZhcmkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gIGlmICghaXNTYWZhcmkpIHtcbiAgICBpbnB1dE5vZGUuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dE5vZGUuc2VsZWN0aW9uRW5kID0gLTFcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBzZWFyY2hOb2RlLmNsYXNzTmFtZSA9ICduby1pbnB1dCdcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 -- cgit v1.1 From 6c91328315e27a16891fc01c1765a1d14b9adb5a Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:35:52 +0100 Subject: fixed iOS safari zooming in when focusing input --- public/stylesheets/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 8151be6..c4c2581 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -53,7 +53,7 @@ html, body { outline: none; border: 0; padding: 16px; - font-size: 1.1em; + font-size: 16px; transition: box-shadow 200ms ease-in-out; } -- cgit v1.1 From 6c454f0b13ff71751f8faae9fa6172b6cb0892f7 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:44:32 +0100 Subject: change layout when keyboard opens on iOS --- public/javascripts/bundle.js | 6 +++++- public/javascripts/main.js | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 3af4d81..8fcfd16 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -855,9 +855,13 @@ if (currentFav) { inputNode.focus(); } +window.addEventListener('native.showkeyboard', function (e) { + searchNode.className = ''; +}); + document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgc2VhcmNoTm9kZS5jbGFzc05hbWUgPSAnJ1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG4gIGlmIChpbnB1dE5vZGUudmFsdWUudHJpbSgpID09PSAnJykgcmV0dXJuXG5cbiAgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuICByZXN1bHRzID0gZnV6enkuZmlsdGVyKHJlbW92ZURpYWNyaXRpY3MoaW5wdXROb2RlLnZhbHVlKSwgVVNFUlMsIHtcbiAgICBleHRyYWN0OiBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZURpYWNyaXRpY3MoZWwudmFsdWUpIH1cbiAgfSkuc2xpY2UoMCwgNylcblxuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSBgJHtyZXN1bHQub3JpZ2luYWwudmFsdWV9YFxuICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgfSlcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgc3VibWl0Rm9ybSlcblxuZnVuY3Rpb24gc3VibWl0Rm9ybSAoZSkge1xuICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGluZGV4SW5SZXN1bHQgPSBzZWxlY3RlZFJlc3VsdCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRSZXN1bHRcbiAgICBzZWxlY3RlZFVzZXIgPSBVU0VSU1tyZXN1bHRzW2luZGV4SW5SZXN1bHRdLmluZGV4XVxuICB9XG4gIGlmIChzZWxlY3RlZFVzZXIgPT0gbnVsbCkgcmV0dXJuXG5cbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICBpbnB1dE5vZGUuYmx1cigpXG5cbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoJywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuYXV0b2NvbXBsZXRlTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gIGlmIChhdXRvY29tcGxldGVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgIHNlbGVjdGVkUmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMsIGUudGFyZ2V0KVxuICAgIHN1Ym1pdEZvcm0oKVxuICB9XG59KVxuXG5wcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQtLVxuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxubmV4dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0KytcbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaW5wdXROb2RlLnNlbGVjdCgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaXNTYWZhcmkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gIGlmICghaXNTYWZhcmkpIHtcbiAgICBpbnB1dE5vZGUuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dE5vZGUuc2VsZWN0aW9uRW5kID0gLTFcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBzZWFyY2hOb2RlLmNsYXNzTmFtZSA9ICduby1pbnB1dCdcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwREEsSUFBTSxjQUFjLFNBQWQsV0FBYyxHQUFZO0FBQzlCLFVBQVEsR0FBUixDQUFZLGtDQUFaO0FBQ0EsTUFBTSxhQUFhLFNBQVMsYUFBVCxDQUF1QixTQUF2QixDQUFuQjtBQUNBLE1BQU0sWUFBWSxXQUFXLGFBQVgsQ0FBeUIsb0JBQXpCLENBQWxCO0FBQ0EsTUFBTSxtQkFBbUIsU0FBUyxhQUFULENBQXVCLGVBQXZCLENBQXpCO0FBQ0EsTUFBSSxlQUFlLEtBQW5CO0FBQ0EsTUFBTSxTQUFTLENBQ2IsQ0FDRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLENBQXZCLEVBREYsRUFFRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBRkYsRUFHRSxFQUFDLE9BQU8sUUFBUixFQUFrQixNQUFNLEdBQXhCLEVBSEYsRUFJRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSkYsRUFLRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBTEYsRUFNRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBTkYsQ0FEYSxFQVNiLENBQ0UsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQURGLEVBRUUsRUFBQyxPQUFPLE1BQVIsRUFBZ0IsTUFBTSxHQUF0QixFQUZGLEVBR0UsRUFBQyxPQUFPLFFBQVIsRUFBa0IsTUFBTSxHQUF4QixFQUhGLEVBSUUsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQUpGLEVBS0UsRUFBQyxPQUFPLE1BQVIsRUFBZ0IsTUFBTSxHQUF0QixFQUxGLEVBTUUsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQU5GLENBVGEsRUFpQmIsQ0FDRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBREYsRUFFRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLENBQXRCLEVBRkYsRUFHRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSEYsRUFJRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSkYsRUFLRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBTEYsRUFNRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBTkYsRUFPRSxFQUFDLE9BQU8sUUFBUixFQUFrQixNQUFNLEdBQXhCLEVBUEYsRUFRRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBUkYsRUFTRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBVEYsQ0FqQmEsQ0FBZjs7QUE4QkEsTUFBTSxnQkFBZ0IsVUFBVSxLQUFoQzs7QUFFQSxZQUFVLEtBQVYsR0FBa0IsRUFBbEI7QUFDQSxZQUFVLFdBQVYsR0FBd0IsRUFBeEI7O0FBRUEsU0FBTyxPQUFQLENBQWUsVUFBQyxHQUFELEVBQU0sUUFBTixFQUFtQjtBQUNoQyxRQUFJLE9BQUosQ0FBWSxVQUFDLElBQUQsRUFBTyxTQUFQLEVBQXFCO0FBQy9CLGlCQUFXLFlBQVk7QUFDckIsWUFBSSxjQUFjLENBQWxCLEVBQXFCLFVBQVUsV0FBVixHQUF3QixFQUF4QjtBQUNyQixrQkFBVSxXQUFWLElBQXlCLEtBQUssS0FBOUI7QUFDRCxPQUhELEVBR0csS0FBSyxJQUFMLEdBQVksSUFIZjtBQUlBLFVBQUksT0FBTyxNQUFQLEtBQWtCLFdBQVcsQ0FBN0IsSUFDQSxPQUFPLFFBQVAsRUFBaUIsTUFBakIsS0FBNEIsWUFBWSxDQUQ1QyxFQUMrQztBQUM3QyxtQkFBVyxZQUFZO0FBQ3JCLGNBQUksVUFBVSxLQUFWLEtBQW9CLEVBQXhCLEVBQTRCO0FBQzFCLHNCQUFVLEtBQVYsR0FBa0IsYUFBbEI7QUFDRDtBQUNELG9CQUFVLFdBQVYsR0FBd0IsUUFBeEI7QUFDQSx5QkFBZSxJQUFmO0FBQ0QsU0FORCxFQU1HLEtBQUssSUFBTCxHQUFZLElBQVosR0FBbUIsSUFOdEI7QUFPRDtBQUNGLEtBZkQ7QUFnQkQsR0FqQkQ7O0FBbUJBLFlBQVUsZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0MsWUFBWTtBQUM5QyxRQUFJLENBQUMsWUFBTCxFQUFtQjs7QUFFbkIscUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUVBLFFBQU0scUJBQXFCLHlHQUEzQjs7QUFNQSx1QkFBbUIsT0FBbkIsQ0FBMkIsZUFBTztBQUNoQyxVQUFNLGFBQWEsU0FBUyxhQUFULENBQXVCLElBQXZCLENBQW5CO0FBQ0EsaUJBQVcsU0FBWCxHQUF1QixHQUF2QjtBQUNBLHVCQUFpQixXQUFqQixDQUE2QixVQUE3QjtBQUNELEtBSkQ7QUFLRCxHQWhCRDs7QUFrQkEsWUFBVSxnQkFBVixDQUEyQixPQUEzQixFQUFvQyxZQUFZO0FBQzlDLFFBQUksQ0FBQyxZQUFMLEVBQW1CO0FBQ25CLFFBQUksVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGVBQWxDLElBQ0EsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGNBRGxDLElBRUEsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGVBRmxDLElBR0EsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGNBSHRDLEVBR3NEO0FBQ3BELGdCQUFVLEtBQVYsR0FBa0IsRUFBbEI7QUFDQSxhQUFPLFFBQVAsQ0FBZ0IsSUFBaEIsR0FBdUIsNkRBQXZCO0FBQ0Q7QUFDRixHQVREO0FBVUQsQ0F4RkQ7O0FBMEZBLE9BQU8sT0FBUCxHQUFpQixFQUFFLHdCQUFGLEVBQWpCOzs7OztBQzFGQSxJQUFJLFVBQVUsUUFBUSxVQUFSLENBQWQ7QUFDQSxJQUFJLFVBQVUsUUFBUSxXQUFSLENBQWQ7O0FBRUEsU0FBUyxhQUFULENBQXdCLFVBQXhCLEVBQW9DLElBQXBDLEVBQTBDLEVBQTFDLEVBQThDO0FBQzVDLFNBQU8sT0FBSyxPQUFPLFFBQVAsQ0FBZ0IsSUFBckIsOERBQ0MsWUFBWSxVQURiLFdBQzhCLElBRDlCLFdBQ3dDLElBRHhDLEdBQytDLFFBQVEsRUFBUixFQUFZLENBQVosRUFBZSxHQUFmLENBRC9DLFVBQVA7QUFFRDs7QUFFRCxPQUFPLE9BQVAsR0FBaUIsYUFBakI7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxPQUFULEdBQW9CO0FBQ2xCO0FBQ0EsTUFBTSxTQUFTLElBQUksSUFBSixFQUFmOztBQUVBO0FBQ0E7QUFDQSxNQUFNLFFBQVEsQ0FBQyxPQUFPLE1BQVAsS0FBa0IsQ0FBbkIsSUFBd0IsQ0FBdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBTyxPQUFQLENBQWUsT0FBTyxPQUFQLEtBQW1CLEtBQW5CLEdBQTJCLENBQTFDOztBQUVBO0FBQ0EsTUFBTSxnQkFBZ0IsT0FBTyxPQUFQLEVBQXRCOztBQUVBO0FBQ0E7QUFDQSxTQUFPLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkI7QUFDQTtBQUNBLE1BQUksT0FBTyxNQUFQLE9BQW9CLENBQXhCLEVBQTJCO0FBQ3pCLFdBQU8sUUFBUCxDQUFnQixDQUFoQixFQUFtQixJQUFJLENBQUUsSUFBSSxPQUFPLE1BQVAsRUFBTCxHQUF3QixDQUF6QixJQUE4QixDQUFyRDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxTQUFPLElBQUksS0FBSyxJQUFMLENBQVUsQ0FBQyxnQkFBZ0IsTUFBakIsSUFBMkIsU0FBckMsQ0FBWCxDQTFCa0IsQ0EwQnlDO0FBQzVEOztBQUVELE9BQU8sT0FBUCxHQUFpQixPQUFqQjs7Ozs7QUNoQ0E7O0FBRUEsUUFBUSxhQUFSOztBQUVBLElBQU0sUUFBUSxRQUFRLE9BQVIsQ0FBZDtBQUNBO0FBQ0EsSUFBTSxlQUFlLFFBQVEsZ0JBQVIsQ0FBckI7QUFDQSxJQUFNLG1CQUFtQixRQUFRLFlBQVIsRUFBc0IsTUFBL0M7QUFDQSxJQUFNLFVBQVUsUUFBUSxXQUFSLENBQWhCO0FBQ0EsSUFBTSxhQUFhLFFBQVEsY0FBUixDQUFuQjs7QUFFQSxJQUFNLGFBQWEsU0FBUyxhQUFULENBQXVCLFNBQXZCLENBQW5CO0FBQ0EsSUFBTSxZQUFZLFdBQVcsYUFBWCxDQUF5QixvQkFBekIsQ0FBbEI7QUFDQSxJQUFNLG1CQUFtQixTQUFTLGFBQVQsQ0FBdUIsZUFBdkIsQ0FBekI7QUFDQSxJQUFNLGlCQUFpQixTQUFTLGFBQVQsQ0FBdUIsV0FBdkIsQ0FBdkI7QUFDQSxJQUFNLGFBQWEsU0FBUyxnQkFBVCxDQUEwQixzQkFBMUIsRUFBa0QsQ0FBbEQsQ0FBbkI7QUFDQSxJQUFNLGFBQWEsU0FBUyxnQkFBVCxDQUEwQixzQkFBMUIsRUFBa0QsQ0FBbEQsQ0FBbkI7QUFDQSxJQUFNLGtCQUFrQixTQUFTLGFBQVQsQ0FBdUIsVUFBdkIsQ0FBeEI7QUFDQSxJQUFNLFVBQVUsU0FBUyxhQUFULENBQXVCLE1BQXZCLENBQWhCOztBQUVBLElBQUksTUFBTSxPQUFOLENBQWMsbUJBQWQsTUFBdUMsQ0FBQyxDQUE1QyxFQUErQztBQUM3QyxNQUFJLFNBQVMsYUFBVCxDQUF1QixXQUF2QixFQUFvQyxjQUFwQyxHQUFxRCxDQUFyRCxFQUF3RCxNQUF4RCxLQUNBLFNBQVMsSUFBVCxDQUFjLGNBQWQsR0FBK0IsQ0FBL0IsRUFBa0MsTUFEdEMsRUFDOEM7QUFDNUMsV0FBTyxRQUFQLEdBQWtCLGdEQUFsQjtBQUNELEdBSEQsTUFHTztBQUNMLFdBQU8sT0FBUCxHQUFpQixZQUFZO0FBQzNCLGFBQU8sUUFBUCxHQUFrQixnREFBbEI7QUFDRCxLQUZEO0FBR0Q7QUFDRixDQVRELE1BU087QUFDTCxVQUFRLEdBQVIsQ0FBWSwwQkFBWjtBQUNEOztBQUVELElBQUksaUJBQWlCLENBQUMsQ0FBdEI7QUFDQSxJQUFJLHFCQUFKO0FBQ0EsSUFBSSxVQUFVLEVBQWQ7QUFDQSxJQUFJLFNBQVMsQ0FBYjs7QUFFQSxTQUFTLGFBQVQsR0FBMEI7QUFDeEIsTUFBSSxDQUFDLE9BQU8sWUFBUCxDQUFvQixPQUFwQixDQUE0QixLQUE1QixDQUFMLEVBQXlDO0FBQ3pDLE1BQU0sVUFBVSxPQUFPLFlBQVAsQ0FBb0IsT0FBcEIsQ0FBNEIsS0FBNUIsRUFBbUMsS0FBbkMsQ0FBeUMsR0FBekMsQ0FBaEI7QUFDQSxNQUFNLE1BQU0sTUFBTSxNQUFOLENBQWE7QUFBQSxXQUFRLEtBQUssSUFBTCxLQUFjLFFBQVEsQ0FBUixDQUFkLElBQTRCLEtBQUssS0FBTCxLQUFlLE9BQU8sUUFBUSxDQUFSLENBQVAsQ0FBbkQ7QUFBQSxHQUFiLENBQVo7QUFDQSxTQUFPLElBQUksQ0FBSixDQUFQO0FBQ0Q7O0FBRUQsU0FBUyxTQUFULENBQW9CLEtBQXBCLEVBQTJCO0FBQ3pCLE1BQUksQ0FBQyxZQUFMLEVBQW1CO0FBQ25CLE1BQUksS0FBSixFQUFXO0FBQ1QsV0FBTyxZQUFQLENBQW9CLE9BQXBCLENBQTRCLEtBQTVCLEVBQW1DLGFBQWEsSUFBYixHQUFvQixHQUFwQixHQUEwQixhQUFhLEtBQTFFO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBTyxZQUFQLENBQW9CLFVBQXBCLENBQStCLEtBQS9CO0FBQ0Q7QUFDRDtBQUNEOztBQUVELFNBQVMsVUFBVCxDQUFxQixLQUFyQixFQUE0QixLQUE1QixFQUFtQztBQUNqQyxNQUFJLFNBQVMsSUFBVCxJQUFpQixTQUFTLElBQTlCLEVBQW9DLE9BQU8sS0FBUDtBQUNwQyxTQUFPLE1BQU0sSUFBTixLQUFlLE1BQU0sSUFBckIsSUFBNkIsTUFBTSxLQUFOLEtBQWdCLE1BQU0sS0FBMUQ7QUFDRDs7QUFFRCxTQUFTLGFBQVQsR0FBMEI7QUFDeEIsTUFBSSxXQUFXLGVBQVgsRUFBNEIsWUFBNUIsQ0FBSixFQUErQztBQUM3QyxZQUFRLFNBQVIsR0FBb0IsVUFBcEI7QUFDRCxHQUZELE1BRU87QUFDTCxZQUFRLFNBQVIsR0FBb0IsU0FBcEI7QUFDRDtBQUNGOztBQUVELFNBQVMsY0FBVCxHQUEyQjtBQUN6QixNQUFJLFdBQVcsQ0FBZixFQUFrQixnQkFBZ0IsU0FBaEIsY0FBb0MsWUFBWSxNQUFoRCxFQUFsQixLQUNLLGdCQUFnQixTQUFoQixzQkFBNEMsWUFBWSxNQUF4RDtBQUNOOztBQUVEOztBQUVBLFdBQVcsZ0JBQVgsQ0FBNEIsU0FBNUIsRUFBdUMsVUFBVSxDQUFWLEVBQWE7QUFDbEQsTUFBSyxRQUFRLE1BQVIsS0FBbUIsQ0FBcEIsS0FBMkIsRUFBRSxHQUFGLEtBQVUsV0FBVixJQUF5QixFQUFFLEdBQUYsS0FBVSxTQUE5RCxDQUFKLEVBQThFO0FBQzVFLE1BQUUsY0FBRjs7QUFFQSxRQUFJLFNBQVMsYUFBVCxDQUF1QixXQUF2QixDQUFKLEVBQXlDLFNBQVMsYUFBVCxDQUF1QixXQUF2QixFQUFvQyxTQUFwQyxDQUE4QyxNQUE5QyxDQUFxRCxVQUFyRDs7QUFFekMsUUFBTSxTQUFTLEVBQUUsR0FBRixLQUFVLFdBQVYsR0FBd0IsQ0FBeEIsR0FBNEIsQ0FBQyxDQUE1QztBQUNBLHNCQUFrQixNQUFsQjtBQUNBLFFBQUksaUJBQWlCLENBQUMsQ0FBdEIsRUFBeUIsaUJBQWlCLFFBQVEsTUFBUixHQUFpQixDQUFsQyxDQUF6QixLQUNLLElBQUksaUJBQWlCLFFBQVEsTUFBUixHQUFpQixDQUF0QyxFQUF5QyxpQkFBaUIsQ0FBQyxDQUFsQjs7QUFFOUMsUUFBSSxtQkFBbUIsQ0FBQyxDQUF4QixFQUEyQixpQkFBaUIsUUFBakIsQ0FBMEIsY0FBMUIsRUFBMEMsU0FBMUMsQ0FBb0QsR0FBcEQsQ0FBd0QsVUFBeEQ7QUFDNUI7QUFDRixDQWJEOztBQWVBLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsVUFBVSxDQUFWLEVBQWE7QUFDaEQsYUFBVyxTQUFYLEdBQXVCLEVBQXZCO0FBQ0EsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCO0FBQ0EsTUFBSSxVQUFVLEtBQVYsQ0FBZ0IsSUFBaEIsT0FBMkIsRUFBL0IsRUFBbUM7O0FBRW5DLG1CQUFpQixDQUFDLENBQWxCO0FBQ0EsWUFBVSxNQUFNLE1BQU4sQ0FBYSxpQkFBaUIsVUFBVSxLQUEzQixDQUFiLEVBQWdELEtBQWhELEVBQXVEO0FBQy9ELGFBQVMsaUJBQVUsRUFBVixFQUFjO0FBQUUsYUFBTyxpQkFBaUIsR0FBRyxLQUFwQixDQUFQO0FBQW1DO0FBREcsR0FBdkQsRUFFUCxLQUZPLENBRUQsQ0FGQyxFQUVFLENBRkYsQ0FBVjs7QUFJQSxVQUFRLE9BQVIsQ0FBZ0IsVUFBVSxNQUFWLEVBQWtCO0FBQ2hDLFFBQU0sYUFBYSxTQUFTLGFBQVQsQ0FBdUIsSUFBdkIsQ0FBbkI7QUFDQSxlQUFXLFNBQVgsUUFBMEIsT0FBTyxRQUFQLENBQWdCLEtBQTFDO0FBQ0EscUJBQWlCLFdBQWpCLENBQTZCLFVBQTdCO0FBQ0QsR0FKRDtBQUtELENBZkQ7O0FBaUJBLFdBQVcsZ0JBQVgsQ0FBNEIsUUFBNUIsRUFBc0MsVUFBdEM7O0FBRUEsU0FBUyxVQUFULENBQXFCLENBQXJCLEVBQXdCO0FBQ3RCLE1BQUksQ0FBSixFQUFPLEVBQUUsY0FBRjtBQUNQLE1BQUksUUFBUSxNQUFSLEtBQW1CLENBQXZCLEVBQTBCO0FBQ3hCLFFBQU0sZ0JBQWdCLG1CQUFtQixDQUFDLENBQXBCLEdBQXdCLENBQXhCLEdBQTRCLGNBQWxEO0FBQ0EsbUJBQWUsTUFBTSxRQUFRLGFBQVIsRUFBdUIsS0FBN0IsQ0FBZjtBQUNEO0FBQ0QsTUFBSSxnQkFBZ0IsSUFBcEIsRUFBMEI7O0FBRTFCOztBQUVBLFlBQVUsS0FBVixHQUFrQixhQUFhLEtBQS9CO0FBQ0EsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUVBLFlBQVUsSUFBVjs7QUFFQSxpQkFBZSxHQUFmLEdBQXFCLGFBQWEsTUFBYixFQUFxQixhQUFhLElBQWxDLEVBQXdDLGFBQWEsS0FBYixHQUFxQixDQUE3RCxDQUFyQjs7QUFFQSxNQUFJLG9CQUFKO0FBQ0EsVUFBUSxhQUFhLElBQXJCO0FBQ0UsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsT0FBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsU0FBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsTUFBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxNQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxLQUFHLFlBQVk7QUFDYixPQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFFBQW5DLEVBQTZDLHdCQUE3QyxFQUEwRCxzQkFBMUQsRUFBWDtBQUNELEdBRkQ7QUFHRDs7QUFFRCxpQkFBaUIsZ0JBQWpCLENBQWtDLE9BQWxDLEVBQTJDLFVBQVUsQ0FBVixFQUFhO0FBQ3RELE1BQUksaUJBQWlCLFFBQWpCLENBQTBCLEVBQUUsTUFBNUIsQ0FBSixFQUF5QztBQUN2QyxxQkFBaUIsTUFBTSxTQUFOLENBQWdCLE9BQWhCLENBQXdCLElBQXhCLENBQTZCLEVBQUUsTUFBRixDQUFTLGFBQVQsQ0FBdUIsVUFBcEQsRUFBZ0UsRUFBRSxNQUFsRSxDQUFqQjtBQUNBO0FBQ0Q7QUFDRixDQUxEOztBQU9BLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDRCxDQUpEOztBQU1BLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDRCxDQUpEOztBQU1BLFVBQVUsZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0MsWUFBWTtBQUM5QyxZQUFVLE1BQVY7QUFDRCxDQUZEOztBQUlBLFVBQVUsZ0JBQVYsQ0FBMkIsTUFBM0IsRUFBbUMsWUFBWTtBQUM3QyxNQUFNLFdBQVcsaUNBQWlDLElBQWpDLENBQXNDLFVBQVUsU0FBaEQsQ0FBakI7QUFDQSxNQUFJLENBQUMsUUFBTCxFQUFlO0FBQ2IsY0FBVSxjQUFWLEdBQTJCLFVBQVUsWUFBVixHQUF5QixDQUFDLENBQXJEO0FBQ0Q7QUFDRixDQUxEOztBQU9BLFdBQVcsZ0JBQVgsQ0FBNEIsTUFBNUIsRUFBb0MsVUFBVSxDQUFWLEVBQWE7QUFDL0MsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCO0FBQ0QsQ0FGRDs7QUFJQSxRQUFRLGdCQUFSLENBQXlCLE9BQXpCLEVBQWtDLFlBQVk7QUFDNUMsTUFBSSxXQUFXLGVBQVgsRUFBNEIsWUFBNUIsQ0FBSixFQUErQztBQUM3QyxjQUFVLEtBQVY7QUFDRCxHQUZELE1BRU87QUFDTCxjQUFVLElBQVY7QUFDRDtBQUNGLENBTkQ7O0FBUUEsSUFBTSxhQUFhLGVBQW5COztBQUVBLElBQUksVUFBSixFQUFnQjtBQUFBO0FBQ2QsbUJBQWUsVUFBZjtBQUNBLGNBQVUsS0FBVixHQUFrQixhQUFhLEtBQS9CO0FBQ0EsbUJBQWUsR0FBZixHQUFxQixhQUFhLE1BQWIsRUFBcUIsYUFBYSxJQUFsQyxFQUF3QyxhQUFhLEtBQWIsR0FBcUIsQ0FBN0QsQ0FBckI7QUFDQTs7QUFFQSxRQUFJLG9CQUFKO0FBQ0EsWUFBUSxhQUFhLElBQXJCO0FBQ0UsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsT0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsTUFBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxRQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxPQUFHLFlBQVk7QUFDYixTQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFlBQW5DLEVBQWlELHdCQUFqRCxFQUE4RCxzQkFBOUQsRUFBWDtBQUNELEtBRkQ7QUF2QmM7QUEwQmYsQ0ExQkQsTUEwQk8sSUFBSSxVQUFVLEtBQVYsS0FBb0IsRUFBeEIsRUFBNEI7QUFDakMsYUFBVyxTQUFYLEdBQXVCLFVBQXZCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsT0FBTyxnQkFBUCxDQUF3QixxQkFBeEIsRUFBK0MsVUFBVSxDQUFWLEVBQWE7QUFDMUQsYUFBVyxTQUFYLEdBQXVCLEVBQXZCO0FBQ0QsQ0FGRDs7QUFJQSxTQUFTLElBQVQsQ0FBYyxLQUFkLENBQW9CLE9BQXBCLEdBQThCLEdBQTlCOztBQUVBLE9BQU8sVUFBUCxHQUFvQixVQUFwQiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBzZWFyY2hOb2RlLmNsYXNzTmFtZSA9ICcnXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgaWYgKCFpc1NhZmFyaSkge1xuICAgIGlucHV0Tm9kZS5zZWxlY3Rpb25TdGFydCA9IGlucHV0Tm9kZS5zZWxlY3Rpb25FbmQgPSAtMVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIHNlYXJjaE5vZGUuY2xhc3NOYW1lID0gJ25vLWlucHV0J1xuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbmF0aXZlLnNob3drZXlib2FyZCcsIGZ1bmN0aW9uIChlKSB7XG4gIHNlYXJjaE5vZGUuY2xhc3NOYW1lID0gJydcbn0pXG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 3afb896..c4c8d32 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -221,6 +221,10 @@ if (currentFav) { inputNode.focus() } +window.addEventListener('native.showkeyboard', function (e) { + searchNode.className = '' +}) + document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From a45a03e92d5b2130b91fc0894ead8346089d5c13 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:49:48 +0100 Subject: that didn't work --- public/javascripts/main.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/public/javascripts/main.js b/public/javascripts/main.js index c4c8d32..3afb896 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -221,10 +221,6 @@ if (currentFav) { inputNode.focus() } -window.addEventListener('native.showkeyboard', function (e) { - searchNode.className = '' -}) - document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From 7574ad6e0ae42601f636919d92a5614ce94d37e6 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:51:04 +0100 Subject: forgot to build --- public/javascripts/bundle.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 8fcfd16..3af4d81 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -855,13 +855,9 @@ if (currentFav) { inputNode.focus(); } -window.addEventListener('native.showkeyboard', function (e) { - searchNode.className = ''; -}); - document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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QThCLEdBQTlCOztBQUVBLE9BQU8sVUFBUCxHQUFvQixVQUFwQiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBzZWFyY2hOb2RlLmNsYXNzTmFtZSA9ICcnXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgaWYgKCFpc1NhZmFyaSkge1xuICAgIGlucHV0Tm9kZS5zZWxlY3Rpb25TdGFydCA9IGlucHV0Tm9kZS5zZWxlY3Rpb25FbmQgPSAtMVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIHNlYXJjaE5vZGUuY2xhc3NOYW1lID0gJ25vLWlucHV0J1xuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbmF0aXZlLnNob3drZXlib2FyZCcsIGZ1bmN0aW9uIChlKSB7XG4gIHNlYXJjaE5vZGUuY2xhc3NOYW1lID0gJydcbn0pXG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgc2VhcmNoTm9kZS5jbGFzc05hbWUgPSAnJ1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG4gIGlmIChpbnB1dE5vZGUudmFsdWUudHJpbSgpID09PSAnJykgcmV0dXJuXG5cbiAgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuICByZXN1bHRzID0gZnV6enkuZmlsdGVyKHJlbW92ZURpYWNyaXRpY3MoaW5wdXROb2RlLnZhbHVlKSwgVVNFUlMsIHtcbiAgICBleHRyYWN0OiBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZURpYWNyaXRpY3MoZWwudmFsdWUpIH1cbiAgfSkuc2xpY2UoMCwgNylcblxuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSBgJHtyZXN1bHQub3JpZ2luYWwudmFsdWV9YFxuICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgfSlcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgc3VibWl0Rm9ybSlcblxuZnVuY3Rpb24gc3VibWl0Rm9ybSAoZSkge1xuICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGluZGV4SW5SZXN1bHQgPSBzZWxlY3RlZFJlc3VsdCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRSZXN1bHRcbiAgICBzZWxlY3RlZFVzZXIgPSBVU0VSU1tyZXN1bHRzW2luZGV4SW5SZXN1bHRdLmluZGV4XVxuICB9XG4gIGlmIChzZWxlY3RlZFVzZXIgPT0gbnVsbCkgcmV0dXJuXG5cbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICBpbnB1dE5vZGUuYmx1cigpXG5cbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoJywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuYXV0b2NvbXBsZXRlTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gIGlmIChhdXRvY29tcGxldGVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgIHNlbGVjdGVkUmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMsIGUudGFyZ2V0KVxuICAgIHN1Ym1pdEZvcm0oKVxuICB9XG59KVxuXG5wcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQtLVxuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxubmV4dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0KytcbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaW5wdXROb2RlLnNlbGVjdCgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaXNTYWZhcmkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gIGlmICghaXNTYWZhcmkpIHtcbiAgICBpbnB1dE5vZGUuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dE5vZGUuc2VsZWN0aW9uRW5kID0gLTFcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBzZWFyY2hOb2RlLmNsYXNzTmFtZSA9ICduby1pbnB1dCdcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 -- cgit v1.1 From 0e2ef2aa2495fa19d7cc7a25cceef58c572494ca Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:59:59 +0100 Subject: .no-input is now on body --- public/javascripts/bundle.js | 6 +++--- public/javascripts/main.js | 4 ++-- public/stylesheets/style.css | 32 ++++++++++++++++++-------------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 3af4d81..f056f6c 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -719,7 +719,7 @@ searchNode.addEventListener('keydown', function (e) { }); searchNode.addEventListener('input', function (e) { - searchNode.className = ''; + document.body.className = ''; autocompleteNode.innerHTML = ''; if (inputNode.value.trim() === '') return; @@ -851,7 +851,7 @@ if (currentFav) { }); })(); } else if (inputNode.value === '') { - searchNode.className = 'no-input'; + document.body.className = 'no-input'; inputNode.focus(); } @@ -860,4 +860,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwREEsSUFBTSxjQUFjLFNBQWQsV0FBYyxHQUFZO0FBQzlCLFVBQVEsR0FBUixDQUFZLGtDQUFaO0FBQ0EsTUFBTSxhQUFhLFNBQVMsYUFBVCxDQUF1QixTQUF2QixDQUFuQjtBQUNBLE1BQU0sWUFBWSxXQUFXLGFBQVgsQ0FBeUIsb0JBQXpCLENBQWxCO0FBQ0EsTUFBTSxtQkFBbUIsU0FBUyxhQUFULENBQXVCLGVBQXZCLENBQXpCO0FBQ0EsTUFBSSxlQUFlLEtBQW5CO0FBQ0EsTUFBTSxTQUFTLENBQ2IsQ0FDRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLENBQXZCLEVBREYsRUFFRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBRkYsRUFHRSxFQUFDLE9BQU8sUUFBUixFQUFrQixNQUFNLEdBQXhCLEVBSEYsRUFJRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSkYsRUFLRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBTEYsRUFNRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBTkYsQ0FEYSxFQVNiLENBQ0UsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQURGLEVBRUUsRUFBQyxPQUFPLE1BQVIsRUFBZ0IsTUFBTSxHQUF0QixFQUZGLEVBR0UsRUFBQyxPQUFPLFFBQVIsRUFBa0IsTUFBTSxHQUF4QixFQUhGLEVBSUUsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQUpGLEVBS0UsRUFBQyxPQUFPLE1BQVIsRUFBZ0IsTUFBTSxHQUF0QixFQUxGLEVBTUUsRUFBQyxPQUFPLE9BQVIsRUFBaUIsTUFBTSxHQUF2QixFQU5GLENBVGEsRUFpQmIsQ0FDRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBREYsRUFFRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLENBQXRCLEVBRkYsRUFHRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSEYsRUFJRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBSkYsRUFLRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBTEYsRUFNRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBTkYsRUFPRSxFQUFDLE9BQU8sUUFBUixFQUFrQixNQUFNLEdBQXhCLEVBUEYsRUFRRSxFQUFDLE9BQU8sTUFBUixFQUFnQixNQUFNLEdBQXRCLEVBUkYsRUFTRSxFQUFDLE9BQU8sT0FBUixFQUFpQixNQUFNLEdBQXZCLEVBVEYsQ0FqQmEsQ0FBZjs7QUE4QkEsTUFBTSxnQkFBZ0IsVUFBVSxLQUFoQzs7QUFFQSxZQUFVLEtBQVYsR0FBa0IsRUFBbEI7QUFDQSxZQUFVLFdBQVYsR0FBd0IsRUFBeEI7O0FBRUEsU0FBTyxPQUFQLENBQWUsVUFBQyxHQUFELEVBQU0sUUFBTixFQUFtQjtBQUNoQyxRQUFJLE9BQUosQ0FBWSxVQUFDLElBQUQsRUFBTyxTQUFQLEVBQXFCO0FBQy9CLGlCQUFXLFlBQVk7QUFDckIsWUFBSSxjQUFjLENBQWxCLEVBQXFCLFVBQVUsV0FBVixHQUF3QixFQUF4QjtBQUNyQixrQkFBVSxXQUFWLElBQXlCLEtBQUssS0FBOUI7QUFDRCxPQUhELEVBR0csS0FBSyxJQUFMLEdBQVksSUFIZjtBQUlBLFVBQUksT0FBTyxNQUFQLEtBQWtCLFdBQVcsQ0FBN0IsSUFDQSxPQUFPLFFBQVAsRUFBaUIsTUFBakIsS0FBNEIsWUFBWSxDQUQ1QyxFQUMrQztBQUM3QyxtQkFBVyxZQUFZO0FBQ3JCLGNBQUksVUFBVSxLQUFWLEtBQW9CLEVBQXhCLEVBQTRCO0FBQzFCLHNCQUFVLEtBQVYsR0FBa0IsYUFBbEI7QUFDRDtBQUNELG9CQUFVLFdBQVYsR0FBd0IsUUFBeEI7QUFDQSx5QkFBZSxJQUFmO0FBQ0QsU0FORCxFQU1HLEtBQUssSUFBTCxHQUFZLElBQVosR0FBbUIsSUFOdEI7QUFPRDtBQUNGLEtBZkQ7QUFnQkQsR0FqQkQ7O0FBbUJBLFlBQVUsZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0MsWUFBWTtBQUM5QyxRQUFJLENBQUMsWUFBTCxFQUFtQjs7QUFFbkIscUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUVBLFFBQU0scUJBQXFCLHlHQUEzQjs7QUFNQSx1QkFBbUIsT0FBbkIsQ0FBMkIsZUFBTztBQUNoQyxVQUFNLGFBQWEsU0FBUyxhQUFULENBQXVCLElBQXZCLENBQW5CO0FBQ0EsaUJBQVcsU0FBWCxHQUF1QixHQUF2QjtBQUNBLHVCQUFpQixXQUFqQixDQUE2QixVQUE3QjtBQUNELEtBSkQ7QUFLRCxHQWhCRDs7QUFrQkEsWUFBVSxnQkFBVixDQUEyQixPQUEzQixFQUFvQyxZQUFZO0FBQzlDLFFBQUksQ0FBQyxZQUFMLEVBQW1CO0FBQ25CLFFBQUksVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGVBQWxDLElBQ0EsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGNBRGxDLElBRUEsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGVBRmxDLElBR0EsVUFBVSxLQUFWLENBQWdCLFdBQWhCLE9BQWtDLGNBSHRDLEVBR3NEO0FBQ3BELGdCQUFVLEtBQVYsR0FBa0IsRUFBbEI7QUFDQSxhQUFPLFFBQVAsQ0FBZ0IsSUFBaEIsR0FBdUIsNkRBQXZCO0FBQ0Q7QUFDRixHQVREO0FBVUQsQ0F4RkQ7O0FBMEZBLE9BQU8sT0FBUCxHQUFpQixFQUFFLHdCQUFGLEVBQWpCOzs7OztBQzFGQSxJQUFJLFVBQVUsUUFBUSxVQUFSLENBQWQ7QUFDQSxJQUFJLFVBQVUsUUFBUSxXQUFSLENBQWQ7O0FBRUEsU0FBUyxhQUFULENBQXdCLFVBQXhCLEVBQW9DLElBQXBDLEVBQTBDLEVBQTFDLEVBQThDO0FBQzVDLFNBQU8sT0FBSyxPQUFPLFFBQVAsQ0FBZ0IsSUFBckIsOERBQ0MsWUFBWSxVQURiLFdBQzhCLElBRDlCLFdBQ3dDLElBRHhDLEdBQytDLFFBQVEsRUFBUixFQUFZLENBQVosRUFBZSxHQUFmLENBRC9DLFVBQVA7QUFFRDs7QUFFRCxPQUFPLE9BQVAsR0FBaUIsYUFBakI7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxPQUFULEdBQW9CO0FBQ2xCO0FBQ0EsTUFBTSxTQUFTLElBQUksSUFBSixFQUFmOztBQUVBO0FBQ0E7QUFDQSxNQUFNLFFBQVEsQ0FBQyxPQUFPLE1BQVAsS0FBa0IsQ0FBbkIsSUFBd0IsQ0FBdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBTyxPQUFQLENBQWUsT0FBTyxPQUFQLEtBQW1CLEtBQW5CLEdBQTJCLENBQTFDOztBQUVBO0FBQ0EsTUFBTSxnQkFBZ0IsT0FBTyxPQUFQLEVBQXRCOztBQUVBO0FBQ0E7QUFDQSxTQUFPLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkI7QUFDQTtBQUNBLE1BQUksT0FBTyxNQUFQLE9BQW9CLENBQXhCLEVBQTJCO0FBQ3pCLFdBQU8sUUFBUCxDQUFnQixDQUFoQixFQUFtQixJQUFJLENBQUUsSUFBSSxPQUFPLE1BQVAsRUFBTCxHQUF3QixDQUF6QixJQUE4QixDQUFyRDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxTQUFPLElBQUksS0FBSyxJQUFMLENBQVUsQ0FBQyxnQkFBZ0IsTUFBakIsSUFBMkIsU0FBckMsQ0FBWCxDQTFCa0IsQ0EwQnlDO0FBQzVEOztBQUVELE9BQU8sT0FBUCxHQUFpQixPQUFqQjs7Ozs7QUNoQ0E7O0FBRUEsUUFBUSxhQUFSOztBQUVBLElBQU0sUUFBUSxRQUFRLE9BQVIsQ0FBZDtBQUNBO0FBQ0EsSUFBTSxlQUFlLFFBQVEsZ0JBQVIsQ0FBckI7QUFDQSxJQUFNLG1CQUFtQixRQUFRLFlBQVIsRUFBc0IsTUFBL0M7QUFDQSxJQUFNLFVBQVUsUUFBUSxXQUFSLENBQWhCO0FBQ0EsSUFBTSxhQUFhLFFBQVEsY0FBUixDQUFuQjs7QUFFQSxJQUFNLGFBQWEsU0FBUyxhQUFULENBQXVCLFNBQXZCLENBQW5CO0FBQ0EsSUFBTSxZQUFZLFdBQVcsYUFBWCxDQUF5QixvQkFBekIsQ0FBbEI7QUFDQSxJQUFNLG1CQUFtQixTQUFTLGFBQVQsQ0FBdUIsZUFBdkIsQ0FBekI7QUFDQSxJQUFNLGlCQUFpQixTQUFTLGFBQVQsQ0FBdUIsV0FBdkIsQ0FBdkI7QUFDQSxJQUFNLGFBQWEsU0FBUyxnQkFBVCxDQUEwQixzQkFBMUIsRUFBa0QsQ0FBbEQsQ0FBbkI7QUFDQSxJQUFNLGFBQWEsU0FBUyxnQkFBVCxDQUEwQixzQkFBMUIsRUFBa0QsQ0FBbEQsQ0FBbkI7QUFDQSxJQUFNLGtCQUFrQixTQUFTLGFBQVQsQ0FBdUIsVUFBdkIsQ0FBeEI7QUFDQSxJQUFNLFVBQVUsU0FBUyxhQUFULENBQXVCLE1BQXZCLENBQWhCOztBQUVBLElBQUksTUFBTSxPQUFOLENBQWMsbUJBQWQsTUFBdUMsQ0FBQyxDQUE1QyxFQUErQztBQUM3QyxNQUFJLFNBQVMsYUFBVCxDQUF1QixXQUF2QixFQUFvQyxjQUFwQyxHQUFxRCxDQUFyRCxFQUF3RCxNQUF4RCxLQUNBLFNBQVMsSUFBVCxDQUFjLGNBQWQsR0FBK0IsQ0FBL0IsRUFBa0MsTUFEdEMsRUFDOEM7QUFDNUMsV0FBTyxRQUFQLEdBQWtCLGdEQUFsQjtBQUNELEdBSEQsTUFHTztBQUNMLFdBQU8sT0FBUCxHQUFpQixZQUFZO0FBQzNCLGFBQU8sUUFBUCxHQUFrQixnREFBbEI7QUFDRCxLQUZEO0FBR0Q7QUFDRixDQVRELE1BU087QUFDTCxVQUFRLEdBQVIsQ0FBWSwwQkFBWjtBQUNEOztBQUVELElBQUksaUJBQWlCLENBQUMsQ0FBdEI7QUFDQSxJQUFJLHFCQUFKO0FBQ0EsSUFBSSxVQUFVLEVBQWQ7QUFDQSxJQUFJLFNBQVMsQ0FBYjs7QUFFQSxTQUFTLGFBQVQsR0FBMEI7QUFDeEIsTUFBSSxDQUFDLE9BQU8sWUFBUCxDQUFvQixPQUFwQixDQUE0QixLQUE1QixDQUFMLEVBQXlDO0FBQ3pDLE1BQU0sVUFBVSxPQUFPLFlBQVAsQ0FBb0IsT0FBcEIsQ0FBNEIsS0FBNUIsRUFBbUMsS0FBbkMsQ0FBeUMsR0FBekMsQ0FBaEI7QUFDQSxNQUFNLE1BQU0sTUFBTSxNQUFOLENBQWE7QUFBQSxXQUFRLEtBQUssSUFBTCxLQUFjLFFBQVEsQ0FBUixDQUFkLElBQTRCLEtBQUssS0FBTCxLQUFlLE9BQU8sUUFBUSxDQUFSLENBQVAsQ0FBbkQ7QUFBQSxHQUFiLENBQVo7QUFDQSxTQUFPLElBQUksQ0FBSixDQUFQO0FBQ0Q7O0FBRUQsU0FBUyxTQUFULENBQW9CLEtBQXBCLEVBQTJCO0FBQ3pCLE1BQUksQ0FBQyxZQUFMLEVBQW1CO0FBQ25CLE1BQUksS0FBSixFQUFXO0FBQ1QsV0FBTyxZQUFQLENBQW9CLE9BQXBCLENBQTRCLEtBQTVCLEVBQW1DLGFBQWEsSUFBYixHQUFvQixHQUFwQixHQUEwQixhQUFhLEtBQTFFO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBTyxZQUFQLENBQW9CLFVBQXBCLENBQStCLEtBQS9CO0FBQ0Q7QUFDRDtBQUNEOztBQUVELFNBQVMsVUFBVCxDQUFxQixLQUFyQixFQUE0QixLQUE1QixFQUFtQztBQUNqQyxNQUFJLFNBQVMsSUFBVCxJQUFpQixTQUFTLElBQTlCLEVBQW9DLE9BQU8sS0FBUDtBQUNwQyxTQUFPLE1BQU0sSUFBTixLQUFlLE1BQU0sSUFBckIsSUFBNkIsTUFBTSxLQUFOLEtBQWdCLE1BQU0sS0FBMUQ7QUFDRDs7QUFFRCxTQUFTLGFBQVQsR0FBMEI7QUFDeEIsTUFBSSxXQUFXLGVBQVgsRUFBNEIsWUFBNUIsQ0FBSixFQUErQztBQUM3QyxZQUFRLFNBQVIsR0FBb0IsVUFBcEI7QUFDRCxHQUZELE1BRU87QUFDTCxZQUFRLFNBQVIsR0FBb0IsU0FBcEI7QUFDRDtBQUNGOztBQUVELFNBQVMsY0FBVCxHQUEyQjtBQUN6QixNQUFJLFdBQVcsQ0FBZixFQUFrQixnQkFBZ0IsU0FBaEIsY0FBb0MsWUFBWSxNQUFoRCxFQUFsQixLQUNLLGdCQUFnQixTQUFoQixzQkFBNEMsWUFBWSxNQUF4RDtBQUNOOztBQUVEOztBQUVBLFdBQVcsZ0JBQVgsQ0FBNEIsU0FBNUIsRUFBdUMsVUFBVSxDQUFWLEVBQWE7QUFDbEQsTUFBSyxRQUFRLE1BQVIsS0FBbUIsQ0FBcEIsS0FBMkIsRUFBRSxHQUFGLEtBQVUsV0FBVixJQUF5QixFQUFFLEdBQUYsS0FBVSxTQUE5RCxDQUFKLEVBQThFO0FBQzVFLE1BQUUsY0FBRjs7QUFFQSxRQUFJLFNBQVMsYUFBVCxDQUF1QixXQUF2QixDQUFKLEVBQXlDLFNBQVMsYUFBVCxDQUF1QixXQUF2QixFQUFvQyxTQUFwQyxDQUE4QyxNQUE5QyxDQUFxRCxVQUFyRDs7QUFFekMsUUFBTSxTQUFTLEVBQUUsR0FBRixLQUFVLFdBQVYsR0FBd0IsQ0FBeEIsR0FBNEIsQ0FBQyxDQUE1QztBQUNBLHNCQUFrQixNQUFsQjtBQUNBLFFBQUksaUJBQWlCLENBQUMsQ0FBdEIsRUFBeUIsaUJBQWlCLFFBQVEsTUFBUixHQUFpQixDQUFsQyxDQUF6QixLQUNLLElBQUksaUJBQWlCLFFBQVEsTUFBUixHQUFpQixDQUF0QyxFQUF5QyxpQkFBaUIsQ0FBQyxDQUFsQjs7QUFFOUMsUUFBSSxtQkFBbUIsQ0FBQyxDQUF4QixFQUEyQixpQkFBaUIsUUFBakIsQ0FBMEIsY0FBMUIsRUFBMEMsU0FBMUMsQ0FBb0QsR0FBcEQsQ0FBd0QsVUFBeEQ7QUFDNUI7QUFDRixDQWJEOztBQWVBLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsVUFBVSxDQUFWLEVBQWE7QUFDaEQsYUFBVyxTQUFYLEdBQXVCLEVBQXZCO0FBQ0EsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCO0FBQ0EsTUFBSSxVQUFVLEtBQVYsQ0FBZ0IsSUFBaEIsT0FBMkIsRUFBL0IsRUFBbUM7O0FBRW5DLG1CQUFpQixDQUFDLENBQWxCO0FBQ0EsWUFBVSxNQUFNLE1BQU4sQ0FBYSxpQkFBaUIsVUFBVSxLQUEzQixDQUFiLEVBQWdELEtBQWhELEVBQXVEO0FBQy9ELGFBQVMsaUJBQVUsRUFBVixFQUFjO0FBQUUsYUFBTyxpQkFBaUIsR0FBRyxLQUFwQixDQUFQO0FBQW1DO0FBREcsR0FBdkQsRUFFUCxLQUZPLENBRUQsQ0FGQyxFQUVFLENBRkYsQ0FBVjs7QUFJQSxVQUFRLE9BQVIsQ0FBZ0IsVUFBVSxNQUFWLEVBQWtCO0FBQ2hDLFFBQU0sYUFBYSxTQUFTLGFBQVQsQ0FBdUIsSUFBdkIsQ0FBbkI7QUFDQSxlQUFXLFNBQVgsUUFBMEIsT0FBTyxRQUFQLENBQWdCLEtBQTFDO0FBQ0EscUJBQWlCLFdBQWpCLENBQTZCLFVBQTdCO0FBQ0QsR0FKRDtBQUtELENBZkQ7O0FBaUJBLFdBQVcsZ0JBQVgsQ0FBNEIsUUFBNUIsRUFBc0MsVUFBdEM7O0FBRUEsU0FBUyxVQUFULENBQXFCLENBQXJCLEVBQXdCO0FBQ3RCLE1BQUksQ0FBSixFQUFPLEVBQUUsY0FBRjtBQUNQLE1BQUksUUFBUSxNQUFSLEtBQW1CLENBQXZCLEVBQTBCO0FBQ3hCLFFBQU0sZ0JBQWdCLG1CQUFtQixDQUFDLENBQXBCLEdBQXdCLENBQXhCLEdBQTRCLGNBQWxEO0FBQ0EsbUJBQWUsTUFBTSxRQUFRLGFBQVIsRUFBdUIsS0FBN0IsQ0FBZjtBQUNEO0FBQ0QsTUFBSSxnQkFBZ0IsSUFBcEIsRUFBMEI7O0FBRTFCOztBQUVBLFlBQVUsS0FBVixHQUFrQixhQUFhLEtBQS9CO0FBQ0EsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCOztBQUVBLFlBQVUsSUFBVjs7QUFFQSxpQkFBZSxHQUFmLEdBQXFCLGFBQWEsTUFBYixFQUFxQixhQUFhLElBQWxDLEVBQXdDLGFBQWEsS0FBYixHQUFxQixDQUE3RCxDQUFyQjs7QUFFQSxNQUFJLG9CQUFKO0FBQ0EsVUFBUSxhQUFhLElBQXJCO0FBQ0UsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsT0FBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsU0FBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsTUFBZDtBQUNBO0FBQ0YsU0FBSyxHQUFMO0FBQ0Usb0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxNQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxLQUFHLFlBQVk7QUFDYixPQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFFBQW5DLEVBQTZDLHdCQUE3QyxFQUEwRCxzQkFBMUQsRUFBWDtBQUNELEdBRkQ7QUFHRDs7QUFFRCxpQkFBaUIsZ0JBQWpCLENBQWtDLE9BQWxDLEVBQTJDLFVBQVUsQ0FBVixFQUFhO0FBQ3RELE1BQUksaUJBQWlCLFFBQWpCLENBQTBCLEVBQUUsTUFBNUIsQ0FBSixFQUF5QztBQUN2QyxxQkFBaUIsTUFBTSxTQUFOLENBQWdCLE9BQWhCLENBQXdCLElBQXhCLENBQTZCLEVBQUUsTUFBRixDQUFTLGFBQVQsQ0FBdUIsVUFBcEQsRUFBZ0UsRUFBRSxNQUFsRSxDQUFqQjtBQUNBO0FBQ0Q7QUFDRixDQUxEOztBQU9BLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDRCxDQUpEOztBQU1BLFdBQVcsZ0JBQVgsQ0FBNEIsT0FBNUIsRUFBcUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDRCxDQUpEOztBQU1BLFVBQVUsZ0JBQVYsQ0FBMkIsT0FBM0IsRUFBb0MsWUFBWTtBQUM5QyxZQUFVLE1BQVY7QUFDRCxDQUZEOztBQUlBLFVBQVUsZ0JBQVYsQ0FBMkIsTUFBM0IsRUFBbUMsWUFBWTtBQUM3QyxNQUFNLFdBQVcsaUNBQWlDLElBQWpDLENBQXNDLFVBQVUsU0FBaEQsQ0FBakI7QUFDQSxNQUFJLENBQUMsUUFBTCxFQUFlO0FBQ2IsY0FBVSxjQUFWLEdBQTJCLFVBQVUsWUFBVixHQUF5QixDQUFDLENBQXJEO0FBQ0Q7QUFDRixDQUxEOztBQU9BLFdBQVcsZ0JBQVgsQ0FBNEIsTUFBNUIsRUFBb0MsVUFBVSxDQUFWLEVBQWE7QUFDL0MsbUJBQWlCLFNBQWpCLEdBQTZCLEVBQTdCO0FBQ0QsQ0FGRDs7QUFJQSxRQUFRLGdCQUFSLENBQXlCLE9BQXpCLEVBQWtDLFlBQVk7QUFDNUMsTUFBSSxXQUFXLGVBQVgsRUFBNEIsWUFBNUIsQ0FBSixFQUErQztBQUM3QyxjQUFVLEtBQVY7QUFDRCxHQUZELE1BRU87QUFDTCxjQUFVLElBQVY7QUFDRDtBQUNGLENBTkQ7O0FBUUEsSUFBTSxhQUFhLGVBQW5COztBQUVBLElBQUksVUFBSixFQUFnQjtBQUFBO0FBQ2QsbUJBQWUsVUFBZjtBQUNBLGNBQVUsS0FBVixHQUFrQixhQUFhLEtBQS9CO0FBQ0EsbUJBQWUsR0FBZixHQUFxQixhQUFhLE1BQWIsRUFBcUIsYUFBYSxJQUFsQyxFQUF3QyxhQUFhLEtBQWIsR0FBcUIsQ0FBN0QsQ0FBckI7QUFDQTs7QUFFQSxRQUFJLG9CQUFKO0FBQ0EsWUFBUSxhQUFhLElBQXJCO0FBQ0UsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsT0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsTUFBZDtBQUNBO0FBQ0YsV0FBSyxHQUFMO0FBQ0Usc0JBQWMsU0FBZDtBQUNBO0FBWko7QUFjQSxRQUFNLGFBQWEsYUFBYSxLQUFoQzs7QUFFQSxPQUFHLFlBQVk7QUFDYixTQUFHLE1BQUgsRUFBVyxFQUFFLFNBQVMsT0FBWCxFQUFvQixlQUFlLFlBQW5DLEVBQWlELHdCQUFqRCxFQUE4RCxzQkFBOUQsRUFBWDtBQUNELEtBRkQ7QUF2QmM7QUEwQmYsQ0ExQkQsTUEwQk8sSUFBSSxVQUFVLEtBQVYsS0FBb0IsRUFBeEIsRUFBNEI7QUFDakMsYUFBVyxTQUFYLEdBQXVCLFVBQXZCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixPQUFwQixHQUE4QixHQUE5Qjs7QUFFQSxPQUFPLFVBQVAsR0FBb0IsVUFBcEIiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgc2VhcmNoTm9kZS5jbGFzc05hbWUgPSAnJ1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG4gIGlmIChpbnB1dE5vZGUudmFsdWUudHJpbSgpID09PSAnJykgcmV0dXJuXG5cbiAgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuICByZXN1bHRzID0gZnV6enkuZmlsdGVyKHJlbW92ZURpYWNyaXRpY3MoaW5wdXROb2RlLnZhbHVlKSwgVVNFUlMsIHtcbiAgICBleHRyYWN0OiBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZURpYWNyaXRpY3MoZWwudmFsdWUpIH1cbiAgfSkuc2xpY2UoMCwgNylcblxuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSBgJHtyZXN1bHQub3JpZ2luYWwudmFsdWV9YFxuICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgfSlcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgc3VibWl0Rm9ybSlcblxuZnVuY3Rpb24gc3VibWl0Rm9ybSAoZSkge1xuICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGluZGV4SW5SZXN1bHQgPSBzZWxlY3RlZFJlc3VsdCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRSZXN1bHRcbiAgICBzZWxlY3RlZFVzZXIgPSBVU0VSU1tyZXN1bHRzW2luZGV4SW5SZXN1bHRdLmluZGV4XVxuICB9XG4gIGlmIChzZWxlY3RlZFVzZXIgPT0gbnVsbCkgcmV0dXJuXG5cbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICBpbnB1dE5vZGUuYmx1cigpXG5cbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoJywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuYXV0b2NvbXBsZXRlTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gIGlmIChhdXRvY29tcGxldGVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgIHNlbGVjdGVkUmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMsIGUudGFyZ2V0KVxuICAgIHN1Ym1pdEZvcm0oKVxuICB9XG59KVxuXG5wcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQtLVxuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxubmV4dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0KytcbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaW5wdXROb2RlLnNlbGVjdCgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaXNTYWZhcmkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gIGlmICghaXNTYWZhcmkpIHtcbiAgICBpbnB1dE5vZGUuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dE5vZGUuc2VsZWN0aW9uRW5kID0gLTFcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBzZWFyY2hOb2RlLmNsYXNzTmFtZSA9ICduby1pbnB1dCdcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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b290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgaWYgKCFpc1NhZmFyaSkge1xuICAgIGlucHV0Tm9kZS5zZWxlY3Rpb25TdGFydCA9IGlucHV0Tm9kZS5zZWxlY3Rpb25FbmQgPSAtMVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ25vLWlucHV0J1xuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 3afb896..722031d 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -89,7 +89,7 @@ searchNode.addEventListener('keydown', function (e) { }) searchNode.addEventListener('input', function (e) { - searchNode.className = '' + document.body.className = '' autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return @@ -217,7 +217,7 @@ if (currentFav) { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction, eventLabel }) }) } else if (inputNode.value === '') { - searchNode.className = 'no-input' + document.body.className = 'no-input' inputNode.focus() } diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index c4c2581..bf9ab43 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -209,16 +209,20 @@ ul a { } @media screen and (min-height: 400px) { - #search.no-input { + body.no-input { + background-color: #ececec; + } + + body.no-input #search { height: 100%; background-color: #ececec; } - #search.no-input button { + body.no-input #search button { display: none; } - #search.no-input #overflow-button { + body.no-input #search #overflow-button { position: absolute; display: block; top: 0; @@ -226,16 +230,16 @@ ul a { color: #757575; } - #search.no-input .print-page { + body.no-input #search .print-page { display: none; } - #search.no-input #overflow-button:focus { + body.no-input #search #overflow-button:focus { background-color: inherit; color: #212121; } - #search.no-input .logo { + body.no-input #search .logo { background-image: url(/icons/mml-logo.png); background-position: center; background-repeat: no-repeat; @@ -248,47 +252,47 @@ ul a { margin: 0 auto; } - #search.no-input .title { + body.no-input #search .title { display: block; font-size: 55px; padding-bottom: 32px; } - #search.no-input .title .text { + body.no-input #search .title .text { text-align: center; line-height: 55px; } - #search.no-input .top-bar { + body.no-input #search .top-bar { position: static; display: block; margin-top: 50vh; transform: translateY(-75%); } - #search.no-input input[type='text'] { + body.no-input #search input[type='text'] { background-color: #FFF; } /* WebKit, Blink, Edge */ - #search.no-input input::-webkit-input-placeholder { + body.no-input #search input::-webkit-input-placeholder { color: #757575; } /* Mozilla Firefox 4 to 18 */ - #search.no-input input:-moz-placeholder { + body.no-input #search input:-moz-placeholder { color: #757575; opacity: 1; } /* Mozilla Firefox 19+ */ - #search.no-input input::-moz-placeholder { + body.no-input #search input::-moz-placeholder { color: #757575; opacity: 1; } /* Internet Explorer 10-11 */ - #search.no-input input:-ms-input-placeholder { + body.no-input #search input:-ms-input-placeholder { color: #757575; } } \ No newline at end of file -- cgit v1.1 From 10ba0f1b863e97e5ecfa19e81fd9ba2a0425301a Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 18:04:05 +0100 Subject: remove box shadow from #search when full height --- public/stylesheets/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index bf9ab43..e4d2e2e 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -216,6 +216,7 @@ ul a { body.no-input #search { height: 100%; background-color: #ececec; + box-shadow: none; } body.no-input #search button { -- cgit v1.1 From 6bc04592cc7511775cdec9902c841aca7a0d2a6c Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 18:49:25 +0100 Subject: fixed week buttons for IE9 --- public/javascripts/bundle.js | 6 +++--- public/javascripts/main.js | 4 ++-- public/stylesheets/style.css | 4 ++-- views/index.jade | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index f056f6c..35bdf6e 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -644,8 +644,8 @@ var searchNode = document.querySelector('#search'); var inputNode = searchNode.querySelector('input[type="text"]'); var autocompleteNode = document.querySelector('.autocomplete'); var scheduleIframe = document.querySelector('#schedule'); -var prevButton = document.querySelectorAll('input[type="button"]')[0]; -var nextButton = document.querySelectorAll('input[type="button"]')[1]; +var prevButton = document.querySelectorAll('#week-selector button')[0]; +var nextButton = document.querySelectorAll('#week-selector button')[1]; var currentWeekNode = document.querySelector('.current'); var favNode = document.querySelector('.fav'); @@ -860,4 +860,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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b290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBpc1NhZmFyaSA9IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgaWYgKCFpc1NhZmFyaSkge1xuICAgIGlucHV0Tm9kZS5zZWxlY3Rpb25TdGFydCA9IGlucHV0Tm9kZS5zZWxlY3Rpb25FbmQgPSAtMVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gJ25vLWlucHV0J1xuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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b290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVswXVxuY29uc3QgbmV4dEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJ1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG4gIGlmIChpbnB1dE5vZGUudmFsdWUudHJpbSgpID09PSAnJykgcmV0dXJuXG5cbiAgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuICByZXN1bHRzID0gZnV6enkuZmlsdGVyKHJlbW92ZURpYWNyaXRpY3MoaW5wdXROb2RlLnZhbHVlKSwgVVNFUlMsIHtcbiAgICBleHRyYWN0OiBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZURpYWNyaXRpY3MoZWwudmFsdWUpIH1cbiAgfSkuc2xpY2UoMCwgNylcblxuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSBgJHtyZXN1bHQub3JpZ2luYWwudmFsdWV9YFxuICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgfSlcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgc3VibWl0Rm9ybSlcblxuZnVuY3Rpb24gc3VibWl0Rm9ybSAoZSkge1xuICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGluZGV4SW5SZXN1bHQgPSBzZWxlY3RlZFJlc3VsdCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRSZXN1bHRcbiAgICBzZWxlY3RlZFVzZXIgPSBVU0VSU1tyZXN1bHRzW2luZGV4SW5SZXN1bHRdLmluZGV4XVxuICB9XG4gIGlmIChzZWxlY3RlZFVzZXIgPT0gbnVsbCkgcmV0dXJuXG5cbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICBpbnB1dE5vZGUuYmx1cigpXG5cbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoJywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuYXV0b2NvbXBsZXRlTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gIGlmIChhdXRvY29tcGxldGVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgIHNlbGVjdGVkUmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMsIGUudGFyZ2V0KVxuICAgIHN1Ym1pdEZvcm0oKVxuICB9XG59KVxuXG5wcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQtLVxuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxubmV4dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0KytcbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaW5wdXROb2RlLnNlbGVjdCgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaXNTYWZhcmkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gIGlmICghaXNTYWZhcmkpIHtcbiAgICBpbnB1dE5vZGUuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dE5vZGUuc2VsZWN0aW9uRW5kID0gLTFcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICduby1pbnB1dCdcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 722031d..41b096a 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -13,8 +13,8 @@ const searchNode = document.querySelector('#search') const inputNode = searchNode.querySelector('input[type="text"]') const autocompleteNode = document.querySelector('.autocomplete') const scheduleIframe = document.querySelector('#schedule') -const prevButton = document.querySelectorAll('input[type="button"]')[0] -const nextButton = document.querySelectorAll('input[type="button"]')[1] +const prevButton = document.querySelectorAll('#week-selector button')[0] +const nextButton = document.querySelectorAll('#week-selector button')[1] const currentWeekNode = document.querySelector('.current') const favNode = document.querySelector('.fav') diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index e4d2e2e..c136867 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -158,7 +158,7 @@ li:hover { padding: 5px; } -#week-selector input[type='button'] { +#week-selector button { background: inherit; color: white; border: 0px; @@ -182,7 +182,7 @@ input { background: none; } -#week-selector input[type='button']:focus, #search #overflow-button:focus, #search .fav:focus { +#week-selector button:focus, #search #overflow-button:focus, #search .fav:focus { outline: none; background-color: #D32F2F; } diff --git a/views/index.jade b/views/index.jade index 82c12e1..941d657 100644 --- a/views/index.jade +++ b/views/index.jade @@ -30,9 +30,9 @@ block content #week-selector #search-space-filler .week-wrapper - input(type='button', value='arrow_back').material-icons + button(type='button').material-icons  span.current Loading... - input(type='button', value='arrow_forward').material-icons + button(type='button').material-icons  iframe(scrolling='no')#schedule -- cgit v1.1 From f6bd3626cc83a68f38493edd96b871e94d54d60d Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 19:09:02 +0100 Subject: changed background color of loading screen --- public/manifest.webmanifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest index c12683f..d33ee8e 100644 --- a/public/manifest.webmanifest +++ b/public/manifest.webmanifest @@ -3,7 +3,7 @@ "short_name": "Rooster", "start_url": "/", "display": "standalone", - "background_color": "#FFF", + "background_color": "#ececec", "description": "Een verbeterde rooster pagina voor het metis", "icons": [{ "src": "/icons/res/mipmap-mdpi/ic_launcher.png", -- cgit v1.1 From 186b477085d63e23566d9ac4c11a36cde178e14e Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 19:24:31 +0100 Subject: hide week selector when didn't search --- public/javascripts/bundle.js | 8 +++++--- public/javascripts/main.js | 6 ++++-- public/stylesheets/style.css | 10 +++++++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 35bdf6e..faa2ba5 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -719,7 +719,7 @@ searchNode.addEventListener('keydown', function (e) { }); searchNode.addEventListener('input', function (e) { - document.body.className = ''; + document.body.classList.remove('no-input'); autocompleteNode.innerHTML = ''; if (inputNode.value.trim() === '') return; @@ -747,6 +747,8 @@ function submitForm(e) { } if (selectedUser == null) return; + document.body.classList.add('searched'); + updateFavNode(); inputNode.value = selectedUser.value; @@ -851,7 +853,7 @@ if (currentFav) { }); })(); } else if (inputNode.value === '') { - document.body.className = 'no-input'; + document.body.classList.add('no-input'); inputNode.focus(); } @@ -860,4 +862,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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b290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVswXVxuY29uc3QgbmV4dEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJ1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG4gIGlmIChpbnB1dE5vZGUudmFsdWUudHJpbSgpID09PSAnJykgcmV0dXJuXG5cbiAgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuICByZXN1bHRzID0gZnV6enkuZmlsdGVyKHJlbW92ZURpYWNyaXRpY3MoaW5wdXROb2RlLnZhbHVlKSwgVVNFUlMsIHtcbiAgICBleHRyYWN0OiBmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZURpYWNyaXRpY3MoZWwudmFsdWUpIH1cbiAgfSkuc2xpY2UoMCwgNylcblxuICByZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSBgJHtyZXN1bHQub3JpZ2luYWwudmFsdWV9YFxuICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgfSlcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgc3VibWl0Rm9ybSlcblxuZnVuY3Rpb24gc3VibWl0Rm9ybSAoZSkge1xuICBpZiAoZSkgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGluZGV4SW5SZXN1bHQgPSBzZWxlY3RlZFJlc3VsdCA9PT0gLTEgPyAwIDogc2VsZWN0ZWRSZXN1bHRcbiAgICBzZWxlY3RlZFVzZXIgPSBVU0VSU1tyZXN1bHRzW2luZGV4SW5SZXN1bHRdLmluZGV4XVxuICB9XG4gIGlmIChzZWxlY3RlZFVzZXIgPT0gbnVsbCkgcmV0dXJuXG5cbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICBpbnB1dE5vZGUuYmx1cigpXG5cbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoJywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn1cblxuYXV0b2NvbXBsZXRlTm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gIGlmIChhdXRvY29tcGxldGVOb2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgIHNlbGVjdGVkUmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMsIGUudGFyZ2V0KVxuICAgIHN1Ym1pdEZvcm0oKVxuICB9XG59KVxuXG5wcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQtLVxuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxubmV4dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0KytcbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbmlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaW5wdXROb2RlLnNlbGVjdCgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaXNTYWZhcmkgPSAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG4gIGlmICghaXNTYWZhcmkpIHtcbiAgICBpbnB1dE5vZGUuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dE5vZGUuc2VsZWN0aW9uRW5kID0gLTFcbiAgfVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICduby1pbnB1dCdcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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cEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cik7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmA/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmAsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyIHx8IHN0ci50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaDtcblxuICBwYXR0ZXJuID0gb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHBhdHRlcm4gfHwgcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBlaXRoZXIgYWRkIGl0IHRvIHRoZSByZXN1bHRcbiAgLy8gb3Igd3JhcCBpbiB0ZW1wbGF0ZSBpZiBpdCdzIHRoZSBuZXh0IHN0cmluZyBpbiB0aGUgcGF0dGVyblxuICBmb3IodmFyIGlkeCA9IDA7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjaCA9IHN0cltpZHhdO1xuICAgIGlmKGNvbXBhcmVTdHJpbmdbaWR4XSA9PT0gcGF0dGVybltwYXR0ZXJuSWR4XSkge1xuICAgICAgY2ggPSBwcmUgKyBjaCArIHBvc3Q7XG4gICAgICBwYXR0ZXJuSWR4ICs9IDE7XG5cbiAgICAgIC8vIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgc2hvdWxkIGluY3JlYXNlIHRoZSBzY29yZSBtb3JlIHRoYW4gbGluZWFybHlcbiAgICAgIGN1cnJTY29yZSArPSAxICsgY3VyclNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyU2NvcmUgPSAwO1xuICAgIH1cbiAgICB0b3RhbFNjb3JlICs9IGN1cnJTY29yZTtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjaDtcbiAgfVxuXG4gIC8vIHJldHVybiByZW5kZXJlZCBzdHJpbmcgaWYgd2UgaGF2ZSBhIG1hdGNoIGZvciBldmVyeSBjaGFyXG4gIGlmKHBhdHRlcm5JZHggPT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbiBleGFjdCBtYXRjaCB3aXRoIHBhdHRlcm4sIHRvdGFsU2NvcmUgc2hvdWxkIGJlIG1heGVkXG4gICAgdG90YWxTY29yZSA9IChjb21wYXJlU3RyaW5nID09PSBwYXR0ZXJuKSA/IEluZmluaXR5IDogdG90YWxTY29yZTtcbiAgICByZXR1cm4ge3JlbmRlcmVkOiByZXN1bHQuam9pbignJyksIHNjb3JlOiB0b3RhbFNjb3JlfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuLy8gVGhlIG5vcm1hbCBlbnRyeSBwb2ludC4gRmlsdGVycyBgYXJyYCBmb3IgbWF0Y2hlcyBhZ2FpbnN0IGBwYXR0ZXJuYC5cbi8vIEl0IHJldHVybnMgYW4gYXJyYXkgd2l0aCBtYXRjaGluZyB2YWx1ZXMgb2YgdGhlIHR5cGU6XG4vL1xuLy8gICAgIFt7XG4vLyAgICAgICAgIHN0cmluZzogICAnPGI+bGFoJyAvLyBUaGUgcmVuZGVyZWQgc3RyaW5nXG4vLyAgICAgICAsIGluZGV4OiAgICAyICAgICAgICAvLyBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICAgICwgb3JpZ2luYWw6ICdibGFoJyAgIC8vIFRoZSBvcmlnaW5hbCBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgfV1cbi8vXG4vLyBgb3B0c2AgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgYmFnLiBEZXRhaWxzOlxuLy9cbi8vICAgIG9wdHMgPSB7XG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBiZWZvcmUgYSBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgICBwcmU6ICAgICAnPGI+J1xuLy9cbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGFmdGVyIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAsIHBvc3Q6ICAgICc8L2I+J1xuLy9cbi8vICAgICAgICAvLyBPcHRpb25hbCBmdW5jdGlvbi4gSW5wdXQgaXMgYW4gZW50cnkgaW4gdGhlIGdpdmVuIGFycmAsXG4vLyAgICAgICAgLy8gb3V0cHV0IHNob3VsZCBiZSB0aGUgc3RyaW5nIHRvIHRlc3QgYHBhdHRlcm5gIGFnYWluc3QuXG4vLyAgICAgICAgLy8gSW4gdGhpcyBleGFtcGxlLCBpZiBgYXJyID0gW3tjcnlpbmc6ICdrb2FsYSd9XWAgd2Ugd291bGQgcmV0dXJuXG4vLyAgICAgICAgLy8gJ2tvYWxhJy5cbi8vICAgICAgLCBleHRyYWN0OiBmdW5jdGlvbihhcmcpIHsgcmV0dXJuIGFyZy5jcnlpbmc7IH1cbi8vICAgIH1cbmZ1enp5LmZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFyciwgb3B0cykge1xuICBpZighYXJyIHx8IGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHJldHVybiBhcnJcbiAgICAucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGVsZW1lbnQsIGlkeCwgYXJyKSB7XG4gICAgICB2YXIgc3RyID0gZWxlbWVudDtcbiAgICAgIGlmKG9wdHMuZXh0cmFjdCkge1xuICAgICAgICBzdHIgPSBvcHRzLmV4dHJhY3QoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVuZGVyZWQgPSBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIsIG9wdHMpO1xuICAgICAgaWYocmVuZGVyZWQgIT0gbnVsbCkge1xuICAgICAgICBwcmV2W3ByZXYubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIHN0cmluZzogcmVuZGVyZWQucmVuZGVyZWRcbiAgICAgICAgICAsIHNjb3JlOiByZW5kZXJlZC5zY29yZVxuICAgICAgICAgICwgaW5kZXg6IGlkeFxuICAgICAgICAgICwgb3JpZ2luYWw6IGVsZW1lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIFtdKVxuXG4gICAgLy8gU29ydCBieSBzY29yZS4gQnJvd3NlcnMgYXJlIGluY29uc2lzdGVudCB3cnQgc3RhYmxlL3Vuc3RhYmxlXG4gICAgLy8gc29ydGluZywgc28gZm9yY2Ugc3RhYmxlIGJ5IHVzaW5nIHRoZSBpbmRleCBpbiB0aGUgY2FzZSBvZiB0aWUuXG4gICAgLy8gU2VlIGh0dHA6Ly9vZmIubmV0L35zZXRobWwvaXMtc29ydC1zdGFibGUuaHRtbFxuICAgIC5zb3J0KGZ1bmN0aW9uKGEsYikge1xuICAgICAgdmFyIGNvbXBhcmUgPSBiLnNjb3JlIC0gYS5zY29yZTtcbiAgICAgIGlmKGNvbXBhcmUpIHJldHVybiBjb21wYXJlO1xuICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH0pO1xufTtcblxuXG59KCkpO1xuXG4iLCIvKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZS4gSXQgY29tZXMgd2l0aG91dCBhbnkgd2FycmFudHksIHRvXG4gICAgICogdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcuIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0XG4gICAgICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIERvIFdoYXQgVGhlIEZ1Y2sgWW91IFdhbnRcbiAgICAgKiBUbyBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgU2FtIEhvY2V2YXIuIFNlZVxuICAgICAqIGh0dHA6Ly93d3cud3RmcGwubmV0LyBmb3IgbW9yZSBkZXRhaWxzLiAqL1xuJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRpdmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgcmVtYWluZGVyXG4gICAgbGVuID4+PSAxO1xuICAgIC8vIFwiZG91YmxlXCIgdGhlIGBjaGAgc28gdGhpcyBvcGVyYXRpb24gY291bnQgZ3Jvd3MgbG9nYXJpdGhtaWNhbGx5IG9uIGBsZW5gXG4gICAgLy8gZWFjaCB0aW1lIGBjaGAgaXMgXCJkb3VibGVkXCIsIHRoZSBgbGVuYCB3b3VsZCBuZWVkIHRvIGJlIFwiZG91YmxlZFwiIHRvb1xuICAgIC8vIHNpbWlsYXIgdG8gZmluZGluZyBhIHZhbHVlIGluIGJpbmFyeSBzZWFyY2ggdHJlZSwgaGVuY2UgTyhsb2cobikpXG4gICAgaWYgKGxlbikgY2ggKz0gY2g7XG4gICAgLy8gYGxlbmAgaXMgMCwgZXhpdCB0aGUgbG9vcFxuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgLy8gcGFkIGBzdHJgIVxuICByZXR1cm4gcGFkICsgc3RyO1xufVxuIiwiY29uc3Qgc2ludGVya2xhYXMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUubG9nKCdzaW50ZXJrbGFhcyBlYXN0ZXIgZWdnIGFjdGl2YXRlZCcpXG4gIGNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbiAgY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG4gIGNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbiAgbGV0IGF1dG9jb21wbGV0ZSA9IGZhbHNlXG4gIGNvbnN0IGx5cmljcyA9IFtcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDB9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDAuM30sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAwLjZ9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAwLjl9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDEuMn0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAxLjV9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDEuOH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMi4xfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDIuNX0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDIuOH0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMy4xfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDMuNH1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMy43fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiA0fSxcbiAgICAgIHt3b29yZDogJ3Rpa3QgJywgdGltZTogNC4zfSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogNC42fSxcbiAgICAgIHt3b29yZDogJ3phY2h0JywgdGltZTogNC44fSxcbiAgICAgIHt3b29yZDogJ2plcyAnLCB0aW1lOiA1LjN9LFxuICAgICAge3dvb3JkOiAndGVnZW4gJywgdGltZTogNS41fSxcbiAgICAgIHt3b29yZDogJ1xcJ3QgJywgdGltZTogNi4xfSxcbiAgICAgIHt3b29yZDogJ3JhYW0gJywgdGltZTogNi4yfVxuICAgIF1cbiAgXVxuXG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBpbnB1dE5vZGUudmFsdWVcblxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuXG4gIGx5cmljcy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgcm93LmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh3b3JkSW5kZXggPT09IDApIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG4gICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciArPSB3b3JkLndvb3JkXG4gICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwKVxuICAgICAgaWYgKGx5cmljcy5sZW5ndGggPT09IHJvd0luZGV4ICsgMSAmJlxuICAgICAgICAgIGx5cmljc1tyb3dJbmRleF0ubGVuZ3RoID09PSB3b3JkSW5kZXggKyAxKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICBpbnB1dE5vZGUudmFsdWUgPSBvcmlnaW5hbFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICdab2VrZW4nXG4gICAgICAgICAgYXV0b2NvbXBsZXRlID0gdHJ1ZVxuICAgICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwICsgMTAwMClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG5cbiAgICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgICBjb25zdCBhdXRvY29tcGxldGVMeXJpY3MgPSBbXG4gICAgICBgJ3QgSXMgZWVuIHZyZWVtZCdsaW5nIHpla2VyLGAsXG4gICAgICBgZGllIHZlcmR3YWFsdCBpcyB6ZWtlci5gLFxuICAgICAgYCdrIFphbCBlZW5zIGV2ZW4gdnJhZ2VuIG5hYXIgemlqbiBuYWFtOmBcbiAgICBdXG5cbiAgICBhdXRvY29tcGxldGVMeXJpY3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gcm93XG4gICAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuICAgIGlmIChpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmlrb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pa29sYWFzJykge1xuICAgICAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkL2pzT2lLSjNrS1hNP3N0YXJ0PTMwJ1xuICAgIH1cbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHNpbnRlcmtsYWFzIH1cbiIsInZhciBsZWZ0UGFkID0gcmVxdWlyZSgnbGVmdC1wYWQnKVxudmFyIGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuXG5mdW5jdGlvbiBnZXRVUkxPZlVzZXJzICh3ZWVrT2Zmc2V0LCB0eXBlLCBpZCkge1xuICByZXR1cm4gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vbWVldGluZ3BvaW50UHJveHkvUm9vc3RlcnMtQUwlMkZkb2MlMkZkYWdyb29zdGVycyUyRmAgK1xuICAgICAgYCR7KGdldFdlZWsoKSArIHdlZWtPZmZzZXQpfSUyRiR7dHlwZX0lMkYke3R5cGV9JHtsZWZ0UGFkKGlkLCA1LCAnMCcpfS5odG1gXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VVJMT2ZVc2Vyc1xuIiwiLy8gY29waWVkIGZyb20gaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jL2RhZ3Jvb3N0ZXJzL3VudGlzc2NyaXB0cy5qcyxcbi8vIHdlcmUgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyB0aGV5IGRvIHRvIGJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lXG4vLyB3ZWVrIG51bWJlci5cbmZ1bmN0aW9uIGdldFdlZWsgKCkge1xuICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgZGF0ZSBvYmplY3RcbiAgY29uc3QgdGFyZ2V0ID0gbmV3IERhdGUoKVxuXG4gIC8vIElTTyB3ZWVrIGRhdGUgd2Vla3Mgc3RhcnQgb24gbW9uZGF5XG4gIC8vIHNvIGNvcnJlY3QgdGhlIGRheSBudW1iZXJcbiAgY29uc3QgZGF5TnIgPSAodGFyZ2V0LmdldERheSgpICsgNikgJSA3XG5cbiAgLy8gSVNPIDg2MDEgc3RhdGVzIHRoYXQgd2VlayAxIGlzIHRoZSB3ZWVrXG4gIC8vIHdpdGggdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoYXQgeWVhci5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgZGF0ZSB0byB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHRhcmdldC5zZXREYXRlKHRhcmdldC5nZXREYXRlKCkgLSBkYXlOciArIDMpXG5cbiAgLy8gU3RvcmUgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIG9mIHRoZSB0YXJnZXQgZGF0ZVxuICBjb25zdCBmaXJzdFRodXJzZGF5ID0gdGFyZ2V0LnZhbHVlT2YoKVxuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IHRvIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhclxuICAvLyBGaXJzdCBzZXQgdGhlIHRhcmdldCB0byBqYW51YXJ5IGZpcnN0XG4gIHRhcmdldC5zZXRNb250aCgwLCAxKVxuICAvLyBOb3QgYSB0aHVyc2RheT8gQ29ycmVjdCB0aGUgZGF0ZSB0byB0aGUgbmV4dCB0aHVyc2RheVxuICBpZiAodGFyZ2V0LmdldERheSgpICE9PSA0KSB7XG4gICAgdGFyZ2V0LnNldE1vbnRoKDAsIDEgKyAoKDQgLSB0YXJnZXQuZ2V0RGF5KCkpICsgNykgJSA3KVxuICB9XG5cbiAgLy8gVGhlIHdlZWtudW1iZXIgaXMgdGhlIG51bWJlciBvZiB3ZWVrcyBiZXR3ZWVuIHRoZVxuICAvLyBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhciBhbmQgdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICByZXR1cm4gMSArIE1hdGguY2VpbCgoZmlyc3RUaHVyc2RheSAtIHRhcmdldCkgLyA2MDQ4MDAwMDApIC8vIDYwNDgwMDAwMCA9IDcgKiAyNCAqIDM2MDAgKiAxMDAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0V2Vla1xuIiwiLyogZ2xvYmFsIGdhIEZMQUdTIFVTRVJTICovXG5cbnJlcXVpcmUoJ2ZsZXhpYmlsaXR5JylcblxuY29uc3QgZnV6enkgPSByZXF1aXJlKCdmdXp6eScpXG4vLyBjb25zdCBnZXRVc2VycyA9IHJlcXVpcmUoJy4vZ2V0VXNlcnMnKVxuY29uc3QgZ2V0VVJMT2ZVc2VyID0gcmVxdWlyZSgnLi9nZXRVUkxPZlVzZXInKVxuY29uc3QgcmVtb3ZlRGlhY3JpdGljcyA9IHJlcXVpcmUoJ2RpYWNyaXRpY3MnKS5yZW1vdmVcbmNvbnN0IGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuY29uc3QgZWFzdGVyRWdncyA9IHJlcXVpcmUoJy4vZWFzdGVyRWdncycpXG5cbmNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbmNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGlzU2FmYXJpID0gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KVxuICBpZiAoIWlzU2FmYXJpKSB7XG4gICAgaW5wdXROb2RlLnNlbGVjdGlvblN0YXJ0ID0gaW5wdXROb2RlLnNlbGVjdGlvbkVuZCA9IC0xXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCduby1pbnB1dCcpXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 41b096a..62bf3a2 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -89,7 +89,7 @@ searchNode.addEventListener('keydown', function (e) { }) searchNode.addEventListener('input', function (e) { - document.body.className = '' + document.body.classList.remove('no-input') autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return @@ -115,6 +115,8 @@ function submitForm (e) { } if (selectedUser == null) return + document.body.classList.add('searched') + updateFavNode() inputNode.value = selectedUser.value @@ -217,7 +219,7 @@ if (currentFav) { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction, eventLabel }) }) } else if (inputNode.value === '') { - document.body.className = 'no-input' + document.body.classList.add('no-input') inputNode.focus() } diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index c136867..78974fb 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -117,8 +117,8 @@ li:hover { padding: 0; } -#search-space-filler { - height: 73px; +body.searched #search-space-filler { + height: 70px; } .autocomplete-wrapper { @@ -208,11 +208,15 @@ ul a { display: none; } +body.no-input #week-selector { + display: none; +} + @media screen and (min-height: 400px) { body.no-input { background-color: #ececec; } - + body.no-input #search { height: 100%; background-color: #ececec; -- cgit v1.1 From 2e9a1e4bbb20b44bbd3416be2f2bfafbfca8dacf Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 19:55:39 +0100 Subject: only show fav button when searched --- public/stylesheets/style.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 78974fb..c3fe06c 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -180,6 +180,12 @@ input { padding: 4px; border-radius: 2px; background: none; + + display: none; +} + +body.searched #search .fav { + display: block; } #week-selector button:focus, #search #overflow-button:focus, #search .fav:focus { -- cgit v1.1 From 9edbbfc1057235194249112f032e450c938c2e68 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 19:58:09 +0100 Subject: fix bug not properly removing selection --- public/javascripts/bundle.js | 13 +++++++------ public/javascripts/main.js | 11 ++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index faa2ba5..0faf5a6 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -803,11 +803,12 @@ inputNode.addEventListener('click', function () { inputNode.select(); }); -inputNode.addEventListener('blur', function () { - var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - if (!isSafari) { - inputNode.selectionStart = inputNode.selectionEnd = -1; - } +window.addEventListener('blur', function () { + // this will removed the selection without drawing focus on it (safari) + // this will removed selection even when focusing an iframe (chrome) + var oldValue = inputNode.value; + inputNode.value = ''; + inputNode.value = oldValue; }); searchNode.addEventListener('blur', function (e) { @@ -862,4 +863,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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cEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cik7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmA/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmAsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyIHx8IHN0ci50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaDtcblxuICBwYXR0ZXJuID0gb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHBhdHRlcm4gfHwgcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBlaXRoZXIgYWRkIGl0IHRvIHRoZSByZXN1bHRcbiAgLy8gb3Igd3JhcCBpbiB0ZW1wbGF0ZSBpZiBpdCdzIHRoZSBuZXh0IHN0cmluZyBpbiB0aGUgcGF0dGVyblxuICBmb3IodmFyIGlkeCA9IDA7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjaCA9IHN0cltpZHhdO1xuICAgIGlmKGNvbXBhcmVTdHJpbmdbaWR4XSA9PT0gcGF0dGVybltwYXR0ZXJuSWR4XSkge1xuICAgICAgY2ggPSBwcmUgKyBjaCArIHBvc3Q7XG4gICAgICBwYXR0ZXJuSWR4ICs9IDE7XG5cbiAgICAgIC8vIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgc2hvdWxkIGluY3JlYXNlIHRoZSBzY29yZSBtb3JlIHRoYW4gbGluZWFybHlcbiAgICAgIGN1cnJTY29yZSArPSAxICsgY3VyclNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyU2NvcmUgPSAwO1xuICAgIH1cbiAgICB0b3RhbFNjb3JlICs9IGN1cnJTY29yZTtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjaDtcbiAgfVxuXG4gIC8vIHJldHVybiByZW5kZXJlZCBzdHJpbmcgaWYgd2UgaGF2ZSBhIG1hdGNoIGZvciBldmVyeSBjaGFyXG4gIGlmKHBhdHRlcm5JZHggPT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbiBleGFjdCBtYXRjaCB3aXRoIHBhdHRlcm4sIHRvdGFsU2NvcmUgc2hvdWxkIGJlIG1heGVkXG4gICAgdG90YWxTY29yZSA9IChjb21wYXJlU3RyaW5nID09PSBwYXR0ZXJuKSA/IEluZmluaXR5IDogdG90YWxTY29yZTtcbiAgICByZXR1cm4ge3JlbmRlcmVkOiByZXN1bHQuam9pbignJyksIHNjb3JlOiB0b3RhbFNjb3JlfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuLy8gVGhlIG5vcm1hbCBlbnRyeSBwb2ludC4gRmlsdGVycyBgYXJyYCBmb3IgbWF0Y2hlcyBhZ2FpbnN0IGBwYXR0ZXJuYC5cbi8vIEl0IHJldHVybnMgYW4gYXJyYXkgd2l0aCBtYXRjaGluZyB2YWx1ZXMgb2YgdGhlIHR5cGU6XG4vL1xuLy8gICAgIFt7XG4vLyAgICAgICAgIHN0cmluZzogICAnPGI+bGFoJyAvLyBUaGUgcmVuZGVyZWQgc3RyaW5nXG4vLyAgICAgICAsIGluZGV4OiAgICAyICAgICAgICAvLyBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICAgICwgb3JpZ2luYWw6ICdibGFoJyAgIC8vIFRoZSBvcmlnaW5hbCBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgfV1cbi8vXG4vLyBgb3B0c2AgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgYmFnLiBEZXRhaWxzOlxuLy9cbi8vICAgIG9wdHMgPSB7XG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBiZWZvcmUgYSBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgICBwcmU6ICAgICAnPGI+J1xuLy9cbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGFmdGVyIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAsIHBvc3Q6ICAgICc8L2I+J1xuLy9cbi8vICAgICAgICAvLyBPcHRpb25hbCBmdW5jdGlvbi4gSW5wdXQgaXMgYW4gZW50cnkgaW4gdGhlIGdpdmVuIGFycmAsXG4vLyAgICAgICAgLy8gb3V0cHV0IHNob3VsZCBiZSB0aGUgc3RyaW5nIHRvIHRlc3QgYHBhdHRlcm5gIGFnYWluc3QuXG4vLyAgICAgICAgLy8gSW4gdGhpcyBleGFtcGxlLCBpZiBgYXJyID0gW3tjcnlpbmc6ICdrb2FsYSd9XWAgd2Ugd291bGQgcmV0dXJuXG4vLyAgICAgICAgLy8gJ2tvYWxhJy5cbi8vICAgICAgLCBleHRyYWN0OiBmdW5jdGlvbihhcmcpIHsgcmV0dXJuIGFyZy5jcnlpbmc7IH1cbi8vICAgIH1cbmZ1enp5LmZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFyciwgb3B0cykge1xuICBpZighYXJyIHx8IGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHJldHVybiBhcnJcbiAgICAucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGVsZW1lbnQsIGlkeCwgYXJyKSB7XG4gICAgICB2YXIgc3RyID0gZWxlbWVudDtcbiAgICAgIGlmKG9wdHMuZXh0cmFjdCkge1xuICAgICAgICBzdHIgPSBvcHRzLmV4dHJhY3QoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVuZGVyZWQgPSBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIsIG9wdHMpO1xuICAgICAgaWYocmVuZGVyZWQgIT0gbnVsbCkge1xuICAgICAgICBwcmV2W3ByZXYubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIHN0cmluZzogcmVuZGVyZWQucmVuZGVyZWRcbiAgICAgICAgICAsIHNjb3JlOiByZW5kZXJlZC5zY29yZVxuICAgICAgICAgICwgaW5kZXg6IGlkeFxuICAgICAgICAgICwgb3JpZ2luYWw6IGVsZW1lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIFtdKVxuXG4gICAgLy8gU29ydCBieSBzY29yZS4gQnJvd3NlcnMgYXJlIGluY29uc2lzdGVudCB3cnQgc3RhYmxlL3Vuc3RhYmxlXG4gICAgLy8gc29ydGluZywgc28gZm9yY2Ugc3RhYmxlIGJ5IHVzaW5nIHRoZSBpbmRleCBpbiB0aGUgY2FzZSBvZiB0aWUuXG4gICAgLy8gU2VlIGh0dHA6Ly9vZmIubmV0L35zZXRobWwvaXMtc29ydC1zdGFibGUuaHRtbFxuICAgIC5zb3J0KGZ1bmN0aW9uKGEsYikge1xuICAgICAgdmFyIGNvbXBhcmUgPSBiLnNjb3JlIC0gYS5zY29yZTtcbiAgICAgIGlmKGNvbXBhcmUpIHJldHVybiBjb21wYXJlO1xuICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH0pO1xufTtcblxuXG59KCkpO1xuXG4iLCIvKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZS4gSXQgY29tZXMgd2l0aG91dCBhbnkgd2FycmFudHksIHRvXG4gICAgICogdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcuIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0XG4gICAgICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIERvIFdoYXQgVGhlIEZ1Y2sgWW91IFdhbnRcbiAgICAgKiBUbyBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgU2FtIEhvY2V2YXIuIFNlZVxuICAgICAqIGh0dHA6Ly93d3cud3RmcGwubmV0LyBmb3IgbW9yZSBkZXRhaWxzLiAqL1xuJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRpdmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgcmVtYWluZGVyXG4gICAgbGVuID4+PSAxO1xuICAgIC8vIFwiZG91YmxlXCIgdGhlIGBjaGAgc28gdGhpcyBvcGVyYXRpb24gY291bnQgZ3Jvd3MgbG9nYXJpdGhtaWNhbGx5IG9uIGBsZW5gXG4gICAgLy8gZWFjaCB0aW1lIGBjaGAgaXMgXCJkb3VibGVkXCIsIHRoZSBgbGVuYCB3b3VsZCBuZWVkIHRvIGJlIFwiZG91YmxlZFwiIHRvb1xuICAgIC8vIHNpbWlsYXIgdG8gZmluZGluZyBhIHZhbHVlIGluIGJpbmFyeSBzZWFyY2ggdHJlZSwgaGVuY2UgTyhsb2cobikpXG4gICAgaWYgKGxlbikgY2ggKz0gY2g7XG4gICAgLy8gYGxlbmAgaXMgMCwgZXhpdCB0aGUgbG9vcFxuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgLy8gcGFkIGBzdHJgIVxuICByZXR1cm4gcGFkICsgc3RyO1xufVxuIiwiY29uc3Qgc2ludGVya2xhYXMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUubG9nKCdzaW50ZXJrbGFhcyBlYXN0ZXIgZWdnIGFjdGl2YXRlZCcpXG4gIGNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbiAgY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG4gIGNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbiAgbGV0IGF1dG9jb21wbGV0ZSA9IGZhbHNlXG4gIGNvbnN0IGx5cmljcyA9IFtcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDB9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDAuM30sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAwLjZ9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAwLjl9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDEuMn0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAxLjV9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDEuOH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMi4xfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDIuNX0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDIuOH0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMy4xfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDMuNH1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMy43fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiA0fSxcbiAgICAgIHt3b29yZDogJ3Rpa3QgJywgdGltZTogNC4zfSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogNC42fSxcbiAgICAgIHt3b29yZDogJ3phY2h0JywgdGltZTogNC44fSxcbiAgICAgIHt3b29yZDogJ2plcyAnLCB0aW1lOiA1LjN9LFxuICAgICAge3dvb3JkOiAndGVnZW4gJywgdGltZTogNS41fSxcbiAgICAgIHt3b29yZDogJ1xcJ3QgJywgdGltZTogNi4xfSxcbiAgICAgIHt3b29yZDogJ3JhYW0gJywgdGltZTogNi4yfVxuICAgIF1cbiAgXVxuXG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBpbnB1dE5vZGUudmFsdWVcblxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuXG4gIGx5cmljcy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgcm93LmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh3b3JkSW5kZXggPT09IDApIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG4gICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciArPSB3b3JkLndvb3JkXG4gICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwKVxuICAgICAgaWYgKGx5cmljcy5sZW5ndGggPT09IHJvd0luZGV4ICsgMSAmJlxuICAgICAgICAgIGx5cmljc1tyb3dJbmRleF0ubGVuZ3RoID09PSB3b3JkSW5kZXggKyAxKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICBpbnB1dE5vZGUudmFsdWUgPSBvcmlnaW5hbFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICdab2VrZW4nXG4gICAgICAgICAgYXV0b2NvbXBsZXRlID0gdHJ1ZVxuICAgICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwICsgMTAwMClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG5cbiAgICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgICBjb25zdCBhdXRvY29tcGxldGVMeXJpY3MgPSBbXG4gICAgICBgJ3QgSXMgZWVuIHZyZWVtZCdsaW5nIHpla2VyLGAsXG4gICAgICBgZGllIHZlcmR3YWFsdCBpcyB6ZWtlci5gLFxuICAgICAgYCdrIFphbCBlZW5zIGV2ZW4gdnJhZ2VuIG5hYXIgemlqbiBuYWFtOmBcbiAgICBdXG5cbiAgICBhdXRvY29tcGxldGVMeXJpY3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gcm93XG4gICAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuICAgIGlmIChpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmlrb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pa29sYWFzJykge1xuICAgICAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkL2pzT2lLSjNrS1hNP3N0YXJ0PTMwJ1xuICAgIH1cbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHNpbnRlcmtsYWFzIH1cbiIsInZhciBsZWZ0UGFkID0gcmVxdWlyZSgnbGVmdC1wYWQnKVxudmFyIGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuXG5mdW5jdGlvbiBnZXRVUkxPZlVzZXJzICh3ZWVrT2Zmc2V0LCB0eXBlLCBpZCkge1xuICByZXR1cm4gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vbWVldGluZ3BvaW50UHJveHkvUm9vc3RlcnMtQUwlMkZkb2MlMkZkYWdyb29zdGVycyUyRmAgK1xuICAgICAgYCR7KGdldFdlZWsoKSArIHdlZWtPZmZzZXQpfSUyRiR7dHlwZX0lMkYke3R5cGV9JHtsZWZ0UGFkKGlkLCA1LCAnMCcpfS5odG1gXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VVJMT2ZVc2Vyc1xuIiwiLy8gY29waWVkIGZyb20gaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jL2RhZ3Jvb3N0ZXJzL3VudGlzc2NyaXB0cy5qcyxcbi8vIHdlcmUgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyB0aGV5IGRvIHRvIGJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lXG4vLyB3ZWVrIG51bWJlci5cbmZ1bmN0aW9uIGdldFdlZWsgKCkge1xuICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgZGF0ZSBvYmplY3RcbiAgY29uc3QgdGFyZ2V0ID0gbmV3IERhdGUoKVxuXG4gIC8vIElTTyB3ZWVrIGRhdGUgd2Vla3Mgc3RhcnQgb24gbW9uZGF5XG4gIC8vIHNvIGNvcnJlY3QgdGhlIGRheSBudW1iZXJcbiAgY29uc3QgZGF5TnIgPSAodGFyZ2V0LmdldERheSgpICsgNikgJSA3XG5cbiAgLy8gSVNPIDg2MDEgc3RhdGVzIHRoYXQgd2VlayAxIGlzIHRoZSB3ZWVrXG4gIC8vIHdpdGggdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoYXQgeWVhci5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgZGF0ZSB0byB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHRhcmdldC5zZXREYXRlKHRhcmdldC5nZXREYXRlKCkgLSBkYXlOciArIDMpXG5cbiAgLy8gU3RvcmUgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIG9mIHRoZSB0YXJnZXQgZGF0ZVxuICBjb25zdCBmaXJzdFRodXJzZGF5ID0gdGFyZ2V0LnZhbHVlT2YoKVxuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IHRvIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhclxuICAvLyBGaXJzdCBzZXQgdGhlIHRhcmdldCB0byBqYW51YXJ5IGZpcnN0XG4gIHRhcmdldC5zZXRNb250aCgwLCAxKVxuICAvLyBOb3QgYSB0aHVyc2RheT8gQ29ycmVjdCB0aGUgZGF0ZSB0byB0aGUgbmV4dCB0aHVyc2RheVxuICBpZiAodGFyZ2V0LmdldERheSgpICE9PSA0KSB7XG4gICAgdGFyZ2V0LnNldE1vbnRoKDAsIDEgKyAoKDQgLSB0YXJnZXQuZ2V0RGF5KCkpICsgNykgJSA3KVxuICB9XG5cbiAgLy8gVGhlIHdlZWtudW1iZXIgaXMgdGhlIG51bWJlciBvZiB3ZWVrcyBiZXR3ZWVuIHRoZVxuICAvLyBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhciBhbmQgdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICByZXR1cm4gMSArIE1hdGguY2VpbCgoZmlyc3RUaHVyc2RheSAtIHRhcmdldCkgLyA2MDQ4MDAwMDApIC8vIDYwNDgwMDAwMCA9IDcgKiAyNCAqIDM2MDAgKiAxMDAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0V2Vla1xuIiwiLyogZ2xvYmFsIGdhIEZMQUdTIFVTRVJTICovXG5cbnJlcXVpcmUoJ2ZsZXhpYmlsaXR5JylcblxuY29uc3QgZnV6enkgPSByZXF1aXJlKCdmdXp6eScpXG4vLyBjb25zdCBnZXRVc2VycyA9IHJlcXVpcmUoJy4vZ2V0VXNlcnMnKVxuY29uc3QgZ2V0VVJMT2ZVc2VyID0gcmVxdWlyZSgnLi9nZXRVUkxPZlVzZXInKVxuY29uc3QgcmVtb3ZlRGlhY3JpdGljcyA9IHJlcXVpcmUoJ2RpYWNyaXRpY3MnKS5yZW1vdmVcbmNvbnN0IGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuY29uc3QgZWFzdGVyRWdncyA9IHJlcXVpcmUoJy4vZWFzdGVyRWdncycpXG5cbmNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbmNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGlzU2FmYXJpID0gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KVxuICBpZiAoIWlzU2FmYXJpKSB7XG4gICAgaW5wdXROb2RlLnNlbGVjdGlvblN0YXJ0ID0gaW5wdXROb2RlLnNlbGVjdGlvbkVuZCA9IC0xXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCduby1pbnB1dCcpXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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QXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cik7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmA/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmAsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyIHx8IHN0ci50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaDtcblxuICBwYXR0ZXJuID0gb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHBhdHRlcm4gfHwgcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBlaXRoZXIgYWRkIGl0IHRvIHRoZSByZXN1bHRcbiAgLy8gb3Igd3JhcCBpbiB0ZW1wbGF0ZSBpZiBpdCdzIHRoZSBuZXh0IHN0cmluZyBpbiB0aGUgcGF0dGVyblxuICBmb3IodmFyIGlkeCA9IDA7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjaCA9IHN0cltpZHhdO1xuICAgIGlmKGNvbXBhcmVTdHJpbmdbaWR4XSA9PT0gcGF0dGVybltwYXR0ZXJuSWR4XSkge1xuICAgICAgY2ggPSBwcmUgKyBjaCArIHBvc3Q7XG4gICAgICBwYXR0ZXJuSWR4ICs9IDE7XG5cbiAgICAgIC8vIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgc2hvdWxkIGluY3JlYXNlIHRoZSBzY29yZSBtb3JlIHRoYW4gbGluZWFybHlcbiAgICAgIGN1cnJTY29yZSArPSAxICsgY3VyclNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyU2NvcmUgPSAwO1xuICAgIH1cbiAgICB0b3RhbFNjb3JlICs9IGN1cnJTY29yZTtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjaDtcbiAgfVxuXG4gIC8vIHJldHVybiByZW5kZXJlZCBzdHJpbmcgaWYgd2UgaGF2ZSBhIG1hdGNoIGZvciBldmVyeSBjaGFyXG4gIGlmKHBhdHRlcm5JZHggPT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbiBleGFjdCBtYXRjaCB3aXRoIHBhdHRlcm4sIHRvdGFsU2NvcmUgc2hvdWxkIGJlIG1heGVkXG4gICAgdG90YWxTY29yZSA9IChjb21wYXJlU3RyaW5nID09PSBwYXR0ZXJuKSA/IEluZmluaXR5IDogdG90YWxTY29yZTtcbiAgICByZXR1cm4ge3JlbmRlcmVkOiByZXN1bHQuam9pbignJyksIHNjb3JlOiB0b3RhbFNjb3JlfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuLy8gVGhlIG5vcm1hbCBlbnRyeSBwb2ludC4gRmlsdGVycyBgYXJyYCBmb3IgbWF0Y2hlcyBhZ2FpbnN0IGBwYXR0ZXJuYC5cbi8vIEl0IHJldHVybnMgYW4gYXJyYXkgd2l0aCBtYXRjaGluZyB2YWx1ZXMgb2YgdGhlIHR5cGU6XG4vL1xuLy8gICAgIFt7XG4vLyAgICAgICAgIHN0cmluZzogICAnPGI+bGFoJyAvLyBUaGUgcmVuZGVyZWQgc3RyaW5nXG4vLyAgICAgICAsIGluZGV4OiAgICAyICAgICAgICAvLyBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICAgICwgb3JpZ2luYWw6ICdibGFoJyAgIC8vIFRoZSBvcmlnaW5hbCBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgfV1cbi8vXG4vLyBgb3B0c2AgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgYmFnLiBEZXRhaWxzOlxuLy9cbi8vICAgIG9wdHMgPSB7XG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBiZWZvcmUgYSBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgICBwcmU6ICAgICAnPGI+J1xuLy9cbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGFmdGVyIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAsIHBvc3Q6ICAgICc8L2I+J1xuLy9cbi8vICAgICAgICAvLyBPcHRpb25hbCBmdW5jdGlvbi4gSW5wdXQgaXMgYW4gZW50cnkgaW4gdGhlIGdpdmVuIGFycmAsXG4vLyAgICAgICAgLy8gb3V0cHV0IHNob3VsZCBiZSB0aGUgc3RyaW5nIHRvIHRlc3QgYHBhdHRlcm5gIGFnYWluc3QuXG4vLyAgICAgICAgLy8gSW4gdGhpcyBleGFtcGxlLCBpZiBgYXJyID0gW3tjcnlpbmc6ICdrb2FsYSd9XWAgd2Ugd291bGQgcmV0dXJuXG4vLyAgICAgICAgLy8gJ2tvYWxhJy5cbi8vICAgICAgLCBleHRyYWN0OiBmdW5jdGlvbihhcmcpIHsgcmV0dXJuIGFyZy5jcnlpbmc7IH1cbi8vICAgIH1cbmZ1enp5LmZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFyciwgb3B0cykge1xuICBpZighYXJyIHx8IGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHJldHVybiBhcnJcbiAgICAucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGVsZW1lbnQsIGlkeCwgYXJyKSB7XG4gICAgICB2YXIgc3RyID0gZWxlbWVudDtcbiAgICAgIGlmKG9wdHMuZXh0cmFjdCkge1xuICAgICAgICBzdHIgPSBvcHRzLmV4dHJhY3QoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVuZGVyZWQgPSBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIsIG9wdHMpO1xuICAgICAgaWYocmVuZGVyZWQgIT0gbnVsbCkge1xuICAgICAgICBwcmV2W3ByZXYubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIHN0cmluZzogcmVuZGVyZWQucmVuZGVyZWRcbiAgICAgICAgICAsIHNjb3JlOiByZW5kZXJlZC5zY29yZVxuICAgICAgICAgICwgaW5kZXg6IGlkeFxuICAgICAgICAgICwgb3JpZ2luYWw6IGVsZW1lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIFtdKVxuXG4gICAgLy8gU29ydCBieSBzY29yZS4gQnJvd3NlcnMgYXJlIGluY29uc2lzdGVudCB3cnQgc3RhYmxlL3Vuc3RhYmxlXG4gICAgLy8gc29ydGluZywgc28gZm9yY2Ugc3RhYmxlIGJ5IHVzaW5nIHRoZSBpbmRleCBpbiB0aGUgY2FzZSBvZiB0aWUuXG4gICAgLy8gU2VlIGh0dHA6Ly9vZmIubmV0L35zZXRobWwvaXMtc29ydC1zdGFibGUuaHRtbFxuICAgIC5zb3J0KGZ1bmN0aW9uKGEsYikge1xuICAgICAgdmFyIGNvbXBhcmUgPSBiLnNjb3JlIC0gYS5zY29yZTtcbiAgICAgIGlmKGNvbXBhcmUpIHJldHVybiBjb21wYXJlO1xuICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH0pO1xufTtcblxuXG59KCkpO1xuXG4iLCIvKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZS4gSXQgY29tZXMgd2l0aG91dCBhbnkgd2FycmFudHksIHRvXG4gICAgICogdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcuIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0XG4gICAgICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIERvIFdoYXQgVGhlIEZ1Y2sgWW91IFdhbnRcbiAgICAgKiBUbyBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgU2FtIEhvY2V2YXIuIFNlZVxuICAgICAqIGh0dHA6Ly93d3cud3RmcGwubmV0LyBmb3IgbW9yZSBkZXRhaWxzLiAqL1xuJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRpdmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgcmVtYWluZGVyXG4gICAgbGVuID4+PSAxO1xuICAgIC8vIFwiZG91YmxlXCIgdGhlIGBjaGAgc28gdGhpcyBvcGVyYXRpb24gY291bnQgZ3Jvd3MgbG9nYXJpdGhtaWNhbGx5IG9uIGBsZW5gXG4gICAgLy8gZWFjaCB0aW1lIGBjaGAgaXMgXCJkb3VibGVkXCIsIHRoZSBgbGVuYCB3b3VsZCBuZWVkIHRvIGJlIFwiZG91YmxlZFwiIHRvb1xuICAgIC8vIHNpbWlsYXIgdG8gZmluZGluZyBhIHZhbHVlIGluIGJpbmFyeSBzZWFyY2ggdHJlZSwgaGVuY2UgTyhsb2cobikpXG4gICAgaWYgKGxlbikgY2ggKz0gY2g7XG4gICAgLy8gYGxlbmAgaXMgMCwgZXhpdCB0aGUgbG9vcFxuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgLy8gcGFkIGBzdHJgIVxuICByZXR1cm4gcGFkICsgc3RyO1xufVxuIiwiY29uc3Qgc2ludGVya2xhYXMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUubG9nKCdzaW50ZXJrbGFhcyBlYXN0ZXIgZWdnIGFjdGl2YXRlZCcpXG4gIGNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbiAgY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG4gIGNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbiAgbGV0IGF1dG9jb21wbGV0ZSA9IGZhbHNlXG4gIGNvbnN0IGx5cmljcyA9IFtcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDB9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDAuM30sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAwLjZ9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAwLjl9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDEuMn0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAxLjV9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDEuOH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMi4xfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDIuNX0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDIuOH0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMy4xfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDMuNH1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMy43fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiA0fSxcbiAgICAgIHt3b29yZDogJ3Rpa3QgJywgdGltZTogNC4zfSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogNC42fSxcbiAgICAgIHt3b29yZDogJ3phY2h0JywgdGltZTogNC44fSxcbiAgICAgIHt3b29yZDogJ2plcyAnLCB0aW1lOiA1LjN9LFxuICAgICAge3dvb3JkOiAndGVnZW4gJywgdGltZTogNS41fSxcbiAgICAgIHt3b29yZDogJ1xcJ3QgJywgdGltZTogNi4xfSxcbiAgICAgIHt3b29yZDogJ3JhYW0gJywgdGltZTogNi4yfVxuICAgIF1cbiAgXVxuXG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBpbnB1dE5vZGUudmFsdWVcblxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuXG4gIGx5cmljcy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgcm93LmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh3b3JkSW5kZXggPT09IDApIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG4gICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciArPSB3b3JkLndvb3JkXG4gICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwKVxuICAgICAgaWYgKGx5cmljcy5sZW5ndGggPT09IHJvd0luZGV4ICsgMSAmJlxuICAgICAgICAgIGx5cmljc1tyb3dJbmRleF0ubGVuZ3RoID09PSB3b3JkSW5kZXggKyAxKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICBpbnB1dE5vZGUudmFsdWUgPSBvcmlnaW5hbFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICdab2VrZW4nXG4gICAgICAgICAgYXV0b2NvbXBsZXRlID0gdHJ1ZVxuICAgICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwICsgMTAwMClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG5cbiAgICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgICBjb25zdCBhdXRvY29tcGxldGVMeXJpY3MgPSBbXG4gICAgICBgJ3QgSXMgZWVuIHZyZWVtZCdsaW5nIHpla2VyLGAsXG4gICAgICBgZGllIHZlcmR3YWFsdCBpcyB6ZWtlci5gLFxuICAgICAgYCdrIFphbCBlZW5zIGV2ZW4gdnJhZ2VuIG5hYXIgemlqbiBuYWFtOmBcbiAgICBdXG5cbiAgICBhdXRvY29tcGxldGVMeXJpY3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gcm93XG4gICAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuICAgIGlmIChpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmlrb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pa29sYWFzJykge1xuICAgICAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkL2pzT2lLSjNrS1hNP3N0YXJ0PTMwJ1xuICAgIH1cbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHNpbnRlcmtsYWFzIH1cbiIsInZhciBsZWZ0UGFkID0gcmVxdWlyZSgnbGVmdC1wYWQnKVxudmFyIGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuXG5mdW5jdGlvbiBnZXRVUkxPZlVzZXJzICh3ZWVrT2Zmc2V0LCB0eXBlLCBpZCkge1xuICByZXR1cm4gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vbWVldGluZ3BvaW50UHJveHkvUm9vc3RlcnMtQUwlMkZkb2MlMkZkYWdyb29zdGVycyUyRmAgK1xuICAgICAgYCR7KGdldFdlZWsoKSArIHdlZWtPZmZzZXQpfSUyRiR7dHlwZX0lMkYke3R5cGV9JHtsZWZ0UGFkKGlkLCA1LCAnMCcpfS5odG1gXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VVJMT2ZVc2Vyc1xuIiwiLy8gY29waWVkIGZyb20gaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jL2RhZ3Jvb3N0ZXJzL3VudGlzc2NyaXB0cy5qcyxcbi8vIHdlcmUgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyB0aGV5IGRvIHRvIGJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lXG4vLyB3ZWVrIG51bWJlci5cbmZ1bmN0aW9uIGdldFdlZWsgKCkge1xuICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgZGF0ZSBvYmplY3RcbiAgY29uc3QgdGFyZ2V0ID0gbmV3IERhdGUoKVxuXG4gIC8vIElTTyB3ZWVrIGRhdGUgd2Vla3Mgc3RhcnQgb24gbW9uZGF5XG4gIC8vIHNvIGNvcnJlY3QgdGhlIGRheSBudW1iZXJcbiAgY29uc3QgZGF5TnIgPSAodGFyZ2V0LmdldERheSgpICsgNikgJSA3XG5cbiAgLy8gSVNPIDg2MDEgc3RhdGVzIHRoYXQgd2VlayAxIGlzIHRoZSB3ZWVrXG4gIC8vIHdpdGggdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoYXQgeWVhci5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgZGF0ZSB0byB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHRhcmdldC5zZXREYXRlKHRhcmdldC5nZXREYXRlKCkgLSBkYXlOciArIDMpXG5cbiAgLy8gU3RvcmUgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIG9mIHRoZSB0YXJnZXQgZGF0ZVxuICBjb25zdCBmaXJzdFRodXJzZGF5ID0gdGFyZ2V0LnZhbHVlT2YoKVxuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IHRvIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhclxuICAvLyBGaXJzdCBzZXQgdGhlIHRhcmdldCB0byBqYW51YXJ5IGZpcnN0XG4gIHRhcmdldC5zZXRNb250aCgwLCAxKVxuICAvLyBOb3QgYSB0aHVyc2RheT8gQ29ycmVjdCB0aGUgZGF0ZSB0byB0aGUgbmV4dCB0aHVyc2RheVxuICBpZiAodGFyZ2V0LmdldERheSgpICE9PSA0KSB7XG4gICAgdGFyZ2V0LnNldE1vbnRoKDAsIDEgKyAoKDQgLSB0YXJnZXQuZ2V0RGF5KCkpICsgNykgJSA3KVxuICB9XG5cbiAgLy8gVGhlIHdlZWtudW1iZXIgaXMgdGhlIG51bWJlciBvZiB3ZWVrcyBiZXR3ZWVuIHRoZVxuICAvLyBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhciBhbmQgdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICByZXR1cm4gMSArIE1hdGguY2VpbCgoZmlyc3RUaHVyc2RheSAtIHRhcmdldCkgLyA2MDQ4MDAwMDApIC8vIDYwNDgwMDAwMCA9IDcgKiAyNCAqIDM2MDAgKiAxMDAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0V2Vla1xuIiwiLyogZ2xvYmFsIGdhIEZMQUdTIFVTRVJTICovXG5cbnJlcXVpcmUoJ2ZsZXhpYmlsaXR5JylcblxuY29uc3QgZnV6enkgPSByZXF1aXJlKCdmdXp6eScpXG4vLyBjb25zdCBnZXRVc2VycyA9IHJlcXVpcmUoJy4vZ2V0VXNlcnMnKVxuY29uc3QgZ2V0VVJMT2ZVc2VyID0gcmVxdWlyZSgnLi9nZXRVUkxPZlVzZXInKVxuY29uc3QgcmVtb3ZlRGlhY3JpdGljcyA9IHJlcXVpcmUoJ2RpYWNyaXRpY3MnKS5yZW1vdmVcbmNvbnN0IGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuY29uc3QgZWFzdGVyRWdncyA9IHJlcXVpcmUoJy4vZWFzdGVyRWdncycpXG5cbmNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbmNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8taW5wdXQnKVxuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 62bf3a2..f9cc0db 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -171,11 +171,12 @@ inputNode.addEventListener('click', function () { inputNode.select() }) -inputNode.addEventListener('blur', function () { - const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) - if (!isSafari) { - inputNode.selectionStart = inputNode.selectionEnd = -1 - } +window.addEventListener('blur', function () { + // this will removed the selection without drawing focus on it (safari) + // this will removed selection even when focusing an iframe (chrome) + const oldValue = inputNode.value + inputNode.value = '' + inputNode.value = oldValue }) searchNode.addEventListener('blur', function (e) { -- cgit v1.1 From a4fad200782966a4b850c5635c864915c18a8bd1 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 20:11:35 +0100 Subject: centered week selector text verticaly --- public/stylesheets/style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index c3fe06c..869ae89 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -153,9 +153,10 @@ body.searched #search-space-filler { } #week-selector .current { + display: flex; flex-grow: 1; - text-align: center; - padding: 5px; + align-items: center; + justify-content: center; } #week-selector button { -- cgit v1.1 From e8fafea3157047b65bd6305f2871d4a1a3d5f707 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 20:56:47 +0100 Subject: fix not being is searched mode when fav is used --- public/javascripts/bundle.js | 6 +++++- public/javascripts/main.js | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 0faf5a6..513b547 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -858,9 +858,13 @@ if (currentFav) { inputNode.focus(); } +if (scheduleIframe.src !== '') { + document.body.classList.add('searched'); +} + document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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QXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cik7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmA/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmAsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyIHx8IHN0ci50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaDtcblxuICBwYXR0ZXJuID0gb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHBhdHRlcm4gfHwgcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBlaXRoZXIgYWRkIGl0IHRvIHRoZSByZXN1bHRcbiAgLy8gb3Igd3JhcCBpbiB0ZW1wbGF0ZSBpZiBpdCdzIHRoZSBuZXh0IHN0cmluZyBpbiB0aGUgcGF0dGVyblxuICBmb3IodmFyIGlkeCA9IDA7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjaCA9IHN0cltpZHhdO1xuICAgIGlmKGNvbXBhcmVTdHJpbmdbaWR4XSA9PT0gcGF0dGVybltwYXR0ZXJuSWR4XSkge1xuICAgICAgY2ggPSBwcmUgKyBjaCArIHBvc3Q7XG4gICAgICBwYXR0ZXJuSWR4ICs9IDE7XG5cbiAgICAgIC8vIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgc2hvdWxkIGluY3JlYXNlIHRoZSBzY29yZSBtb3JlIHRoYW4gbGluZWFybHlcbiAgICAgIGN1cnJTY29yZSArPSAxICsgY3VyclNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyU2NvcmUgPSAwO1xuICAgIH1cbiAgICB0b3RhbFNjb3JlICs9IGN1cnJTY29yZTtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjaDtcbiAgfVxuXG4gIC8vIHJldHVybiByZW5kZXJlZCBzdHJpbmcgaWYgd2UgaGF2ZSBhIG1hdGNoIGZvciBldmVyeSBjaGFyXG4gIGlmKHBhdHRlcm5JZHggPT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbiBleGFjdCBtYXRjaCB3aXRoIHBhdHRlcm4sIHRvdGFsU2NvcmUgc2hvdWxkIGJlIG1heGVkXG4gICAgdG90YWxTY29yZSA9IChjb21wYXJlU3RyaW5nID09PSBwYXR0ZXJuKSA/IEluZmluaXR5IDogdG90YWxTY29yZTtcbiAgICByZXR1cm4ge3JlbmRlcmVkOiByZXN1bHQuam9pbignJyksIHNjb3JlOiB0b3RhbFNjb3JlfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuLy8gVGhlIG5vcm1hbCBlbnRyeSBwb2ludC4gRmlsdGVycyBgYXJyYCBmb3IgbWF0Y2hlcyBhZ2FpbnN0IGBwYXR0ZXJuYC5cbi8vIEl0IHJldHVybnMgYW4gYXJyYXkgd2l0aCBtYXRjaGluZyB2YWx1ZXMgb2YgdGhlIHR5cGU6XG4vL1xuLy8gICAgIFt7XG4vLyAgICAgICAgIHN0cmluZzogICAnPGI+bGFoJyAvLyBUaGUgcmVuZGVyZWQgc3RyaW5nXG4vLyAgICAgICAsIGluZGV4OiAgICAyICAgICAgICAvLyBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICAgICwgb3JpZ2luYWw6ICdibGFoJyAgIC8vIFRoZSBvcmlnaW5hbCBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgfV1cbi8vXG4vLyBgb3B0c2AgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgYmFnLiBEZXRhaWxzOlxuLy9cbi8vICAgIG9wdHMgPSB7XG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBiZWZvcmUgYSBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgICBwcmU6ICAgICAnPGI+J1xuLy9cbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGFmdGVyIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAsIHBvc3Q6ICAgICc8L2I+J1xuLy9cbi8vICAgICAgICAvLyBPcHRpb25hbCBmdW5jdGlvbi4gSW5wdXQgaXMgYW4gZW50cnkgaW4gdGhlIGdpdmVuIGFycmAsXG4vLyAgICAgICAgLy8gb3V0cHV0IHNob3VsZCBiZSB0aGUgc3RyaW5nIHRvIHRlc3QgYHBhdHRlcm5gIGFnYWluc3QuXG4vLyAgICAgICAgLy8gSW4gdGhpcyBleGFtcGxlLCBpZiBgYXJyID0gW3tjcnlpbmc6ICdrb2FsYSd9XWAgd2Ugd291bGQgcmV0dXJuXG4vLyAgICAgICAgLy8gJ2tvYWxhJy5cbi8vICAgICAgLCBleHRyYWN0OiBmdW5jdGlvbihhcmcpIHsgcmV0dXJuIGFyZy5jcnlpbmc7IH1cbi8vICAgIH1cbmZ1enp5LmZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFyciwgb3B0cykge1xuICBpZighYXJyIHx8IGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHJldHVybiBhcnJcbiAgICAucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGVsZW1lbnQsIGlkeCwgYXJyKSB7XG4gICAgICB2YXIgc3RyID0gZWxlbWVudDtcbiAgICAgIGlmKG9wdHMuZXh0cmFjdCkge1xuICAgICAgICBzdHIgPSBvcHRzLmV4dHJhY3QoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVuZGVyZWQgPSBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIsIG9wdHMpO1xuICAgICAgaWYocmVuZGVyZWQgIT0gbnVsbCkge1xuICAgICAgICBwcmV2W3ByZXYubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIHN0cmluZzogcmVuZGVyZWQucmVuZGVyZWRcbiAgICAgICAgICAsIHNjb3JlOiByZW5kZXJlZC5zY29yZVxuICAgICAgICAgICwgaW5kZXg6IGlkeFxuICAgICAgICAgICwgb3JpZ2luYWw6IGVsZW1lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIFtdKVxuXG4gICAgLy8gU29ydCBieSBzY29yZS4gQnJvd3NlcnMgYXJlIGluY29uc2lzdGVudCB3cnQgc3RhYmxlL3Vuc3RhYmxlXG4gICAgLy8gc29ydGluZywgc28gZm9yY2Ugc3RhYmxlIGJ5IHVzaW5nIHRoZSBpbmRleCBpbiB0aGUgY2FzZSBvZiB0aWUuXG4gICAgLy8gU2VlIGh0dHA6Ly9vZmIubmV0L35zZXRobWwvaXMtc29ydC1zdGFibGUuaHRtbFxuICAgIC5zb3J0KGZ1bmN0aW9uKGEsYikge1xuICAgICAgdmFyIGNvbXBhcmUgPSBiLnNjb3JlIC0gYS5zY29yZTtcbiAgICAgIGlmKGNvbXBhcmUpIHJldHVybiBjb21wYXJlO1xuICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH0pO1xufTtcblxuXG59KCkpO1xuXG4iLCIvKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZS4gSXQgY29tZXMgd2l0aG91dCBhbnkgd2FycmFudHksIHRvXG4gICAgICogdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcuIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0XG4gICAgICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIERvIFdoYXQgVGhlIEZ1Y2sgWW91IFdhbnRcbiAgICAgKiBUbyBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgU2FtIEhvY2V2YXIuIFNlZVxuICAgICAqIGh0dHA6Ly93d3cud3RmcGwubmV0LyBmb3IgbW9yZSBkZXRhaWxzLiAqL1xuJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRpdmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgcmVtYWluZGVyXG4gICAgbGVuID4+PSAxO1xuICAgIC8vIFwiZG91YmxlXCIgdGhlIGBjaGAgc28gdGhpcyBvcGVyYXRpb24gY291bnQgZ3Jvd3MgbG9nYXJpdGhtaWNhbGx5IG9uIGBsZW5gXG4gICAgLy8gZWFjaCB0aW1lIGBjaGAgaXMgXCJkb3VibGVkXCIsIHRoZSBgbGVuYCB3b3VsZCBuZWVkIHRvIGJlIFwiZG91YmxlZFwiIHRvb1xuICAgIC8vIHNpbWlsYXIgdG8gZmluZGluZyBhIHZhbHVlIGluIGJpbmFyeSBzZWFyY2ggdHJlZSwgaGVuY2UgTyhsb2cobikpXG4gICAgaWYgKGxlbikgY2ggKz0gY2g7XG4gICAgLy8gYGxlbmAgaXMgMCwgZXhpdCB0aGUgbG9vcFxuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgLy8gcGFkIGBzdHJgIVxuICByZXR1cm4gcGFkICsgc3RyO1xufVxuIiwiY29uc3Qgc2ludGVya2xhYXMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUubG9nKCdzaW50ZXJrbGFhcyBlYXN0ZXIgZWdnIGFjdGl2YXRlZCcpXG4gIGNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbiAgY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG4gIGNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbiAgbGV0IGF1dG9jb21wbGV0ZSA9IGZhbHNlXG4gIGNvbnN0IGx5cmljcyA9IFtcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDB9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDAuM30sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAwLjZ9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAwLjl9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDEuMn0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAxLjV9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDEuOH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMi4xfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDIuNX0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDIuOH0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMy4xfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDMuNH1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMy43fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiA0fSxcbiAgICAgIHt3b29yZDogJ3Rpa3QgJywgdGltZTogNC4zfSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogNC42fSxcbiAgICAgIHt3b29yZDogJ3phY2h0JywgdGltZTogNC44fSxcbiAgICAgIHt3b29yZDogJ2plcyAnLCB0aW1lOiA1LjN9LFxuICAgICAge3dvb3JkOiAndGVnZW4gJywgdGltZTogNS41fSxcbiAgICAgIHt3b29yZDogJ1xcJ3QgJywgdGltZTogNi4xfSxcbiAgICAgIHt3b29yZDogJ3JhYW0gJywgdGltZTogNi4yfVxuICAgIF1cbiAgXVxuXG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBpbnB1dE5vZGUudmFsdWVcblxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuXG4gIGx5cmljcy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgcm93LmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh3b3JkSW5kZXggPT09IDApIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG4gICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciArPSB3b3JkLndvb3JkXG4gICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwKVxuICAgICAgaWYgKGx5cmljcy5sZW5ndGggPT09IHJvd0luZGV4ICsgMSAmJlxuICAgICAgICAgIGx5cmljc1tyb3dJbmRleF0ubGVuZ3RoID09PSB3b3JkSW5kZXggKyAxKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICBpbnB1dE5vZGUudmFsdWUgPSBvcmlnaW5hbFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICdab2VrZW4nXG4gICAgICAgICAgYXV0b2NvbXBsZXRlID0gdHJ1ZVxuICAgICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwICsgMTAwMClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG5cbiAgICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgICBjb25zdCBhdXRvY29tcGxldGVMeXJpY3MgPSBbXG4gICAgICBgJ3QgSXMgZWVuIHZyZWVtZCdsaW5nIHpla2VyLGAsXG4gICAgICBgZGllIHZlcmR3YWFsdCBpcyB6ZWtlci5gLFxuICAgICAgYCdrIFphbCBlZW5zIGV2ZW4gdnJhZ2VuIG5hYXIgemlqbiBuYWFtOmBcbiAgICBdXG5cbiAgICBhdXRvY29tcGxldGVMeXJpY3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gcm93XG4gICAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuICAgIGlmIChpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmlrb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pa29sYWFzJykge1xuICAgICAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkL2pzT2lLSjNrS1hNP3N0YXJ0PTMwJ1xuICAgIH1cbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHNpbnRlcmtsYWFzIH1cbiIsInZhciBsZWZ0UGFkID0gcmVxdWlyZSgnbGVmdC1wYWQnKVxudmFyIGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuXG5mdW5jdGlvbiBnZXRVUkxPZlVzZXJzICh3ZWVrT2Zmc2V0LCB0eXBlLCBpZCkge1xuICByZXR1cm4gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vbWVldGluZ3BvaW50UHJveHkvUm9vc3RlcnMtQUwlMkZkb2MlMkZkYWdyb29zdGVycyUyRmAgK1xuICAgICAgYCR7KGdldFdlZWsoKSArIHdlZWtPZmZzZXQpfSUyRiR7dHlwZX0lMkYke3R5cGV9JHtsZWZ0UGFkKGlkLCA1LCAnMCcpfS5odG1gXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VVJMT2ZVc2Vyc1xuIiwiLy8gY29waWVkIGZyb20gaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jL2RhZ3Jvb3N0ZXJzL3VudGlzc2NyaXB0cy5qcyxcbi8vIHdlcmUgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyB0aGV5IGRvIHRvIGJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lXG4vLyB3ZWVrIG51bWJlci5cbmZ1bmN0aW9uIGdldFdlZWsgKCkge1xuICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgZGF0ZSBvYmplY3RcbiAgY29uc3QgdGFyZ2V0ID0gbmV3IERhdGUoKVxuXG4gIC8vIElTTyB3ZWVrIGRhdGUgd2Vla3Mgc3RhcnQgb24gbW9uZGF5XG4gIC8vIHNvIGNvcnJlY3QgdGhlIGRheSBudW1iZXJcbiAgY29uc3QgZGF5TnIgPSAodGFyZ2V0LmdldERheSgpICsgNikgJSA3XG5cbiAgLy8gSVNPIDg2MDEgc3RhdGVzIHRoYXQgd2VlayAxIGlzIHRoZSB3ZWVrXG4gIC8vIHdpdGggdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoYXQgeWVhci5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgZGF0ZSB0byB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHRhcmdldC5zZXREYXRlKHRhcmdldC5nZXREYXRlKCkgLSBkYXlOciArIDMpXG5cbiAgLy8gU3RvcmUgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIG9mIHRoZSB0YXJnZXQgZGF0ZVxuICBjb25zdCBmaXJzdFRodXJzZGF5ID0gdGFyZ2V0LnZhbHVlT2YoKVxuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IHRvIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhclxuICAvLyBGaXJzdCBzZXQgdGhlIHRhcmdldCB0byBqYW51YXJ5IGZpcnN0XG4gIHRhcmdldC5zZXRNb250aCgwLCAxKVxuICAvLyBOb3QgYSB0aHVyc2RheT8gQ29ycmVjdCB0aGUgZGF0ZSB0byB0aGUgbmV4dCB0aHVyc2RheVxuICBpZiAodGFyZ2V0LmdldERheSgpICE9PSA0KSB7XG4gICAgdGFyZ2V0LnNldE1vbnRoKDAsIDEgKyAoKDQgLSB0YXJnZXQuZ2V0RGF5KCkpICsgNykgJSA3KVxuICB9XG5cbiAgLy8gVGhlIHdlZWtudW1iZXIgaXMgdGhlIG51bWJlciBvZiB3ZWVrcyBiZXR3ZWVuIHRoZVxuICAvLyBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhciBhbmQgdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICByZXR1cm4gMSArIE1hdGguY2VpbCgoZmlyc3RUaHVyc2RheSAtIHRhcmdldCkgLyA2MDQ4MDAwMDApIC8vIDYwNDgwMDAwMCA9IDcgKiAyNCAqIDM2MDAgKiAxMDAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0V2Vla1xuIiwiLyogZ2xvYmFsIGdhIEZMQUdTIFVTRVJTICovXG5cbnJlcXVpcmUoJ2ZsZXhpYmlsaXR5JylcblxuY29uc3QgZnV6enkgPSByZXF1aXJlKCdmdXp6eScpXG4vLyBjb25zdCBnZXRVc2VycyA9IHJlcXVpcmUoJy4vZ2V0VXNlcnMnKVxuY29uc3QgZ2V0VVJMT2ZVc2VyID0gcmVxdWlyZSgnLi9nZXRVUkxPZlVzZXInKVxuY29uc3QgcmVtb3ZlRGlhY3JpdGljcyA9IHJlcXVpcmUoJ2RpYWNyaXRpY3MnKS5yZW1vdmVcbmNvbnN0IGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuY29uc3QgZWFzdGVyRWdncyA9IHJlcXVpcmUoJy4vZWFzdGVyRWdncycpXG5cbmNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbmNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8taW5wdXQnKVxuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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eEIsQ0FBNEIsVUFBNUI7QUFDRDs7QUFFRCxTQUFTLElBQVQsQ0FBYyxLQUFkLENBQW9CLE9BQXBCLEdBQThCLEdBQTlCOztBQUVBLE9BQU8sVUFBUCxHQUFvQixVQUFwQiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVswXVxuY29uc3QgbmV4dEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduby1pbnB1dCcpXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgZHJhd2luZyBmb2N1cyBvbiBpdCAoc2FmYXJpKVxuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCBzZWxlY3Rpb24gZXZlbiB3aGVuIGZvY3VzaW5nIGFuIGlmcmFtZSAoY2hyb21lKVxuICBjb25zdCBvbGRWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUudmFsdWUgPSBvbGRWYWx1ZVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLWlucHV0JylcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuaWYgKHNjaGVkdWxlSWZyYW1lLnNyYyAhPT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdzZWFyY2hlZCcpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== diff --git a/public/javascripts/main.js b/public/javascripts/main.js index f9cc0db..97f6bcc 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -224,6 +224,10 @@ if (currentFav) { inputNode.focus() } +if (scheduleIframe.src !== '') { + document.body.classList.add('searched') +} + document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From 84bf0b24e0a6b584311218108ca953f911901c74 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 11:08:35 +0100 Subject: fix IE bug input event bug The IE 'input' event doesn't work propery. Use non-standard 'textinput' event on IE instaid. --- public/javascripts/main.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 722031d..4ebc6c8 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -88,7 +88,15 @@ searchNode.addEventListener('keydown', function (e) { } }) -searchNode.addEventListener('input', function (e) { +let inputEventStr +if (navigator.userAgent.indexOf('MSIE') !== -1 || + navigator.appVersion.indexOf('Trident/') > 0) { + inputEventStr = 'textinput' // IE 6-11 +} else { + inputEventStr = 'input' // normal browsers +} + +searchNode.addEventListener(inputEventStr, function (e) { document.body.className = '' autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return -- cgit v1.1 From ee4d88bc633bb997700c787a40ebd325da249bf4 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 11:15:34 +0100 Subject: forgot to add this one --- public/javascripts/bundle.js | 48 +++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 513b547..da2840d 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -343,23 +343,23 @@ if (typeof exports !== 'undefined') { // Return all elements of `array` that have a fuzzy // match against `pattern`. fuzzy.simpleFilter = function(pattern, array) { - return array.filter(function(str) { - return fuzzy.test(pattern, str); + return array.filter(function(string) { + return fuzzy.test(pattern, string); }); }; -// Does `pattern` fuzzy match `str`? -fuzzy.test = function(pattern, str) { - return fuzzy.match(pattern, str) !== null; +// Does `pattern` fuzzy match `string`? +fuzzy.test = function(pattern, string) { + return fuzzy.match(pattern, string) !== null; }; -// If `pattern` matches `str`, wrap each matching character +// If `pattern` matches `string`, wrap each matching character // in `opts.pre` and `opts.post`. If no match, return null -fuzzy.match = function(pattern, str, opts) { +fuzzy.match = function(pattern, string, opts) { opts = opts || {}; var patternIdx = 0 , result = [] - , len = str.length + , len = string.length , totalScore = 0 , currScore = 0 // prefix @@ -368,15 +368,15 @@ fuzzy.match = function(pattern, str, opts) { , post = opts.post || '' // String to compare against. This might be a lowercase version of the // raw string - , compareString = opts.caseSensitive && str || str.toLowerCase() - , ch; + , compareString = opts.caseSensitive && string || string.toLowerCase() + , ch, compareChar; pattern = opts.caseSensitive && pattern || pattern.toLowerCase(); // For each character in the string, either add it to the result // or wrap in template if it's the next string in the pattern for(var idx = 0; idx < len; idx++) { - ch = str[idx]; + ch = string[idx]; if(compareString[idx] === pattern[patternIdx]) { ch = pre + ch + post; patternIdx += 1; @@ -392,8 +392,6 @@ fuzzy.match = function(pattern, str, opts) { // return rendered string if we have a match for every char if(patternIdx === pattern.length) { - // if the string is an exact match with pattern, totalScore should be maxed - totalScore = (compareString === pattern) ? Infinity : totalScore; return {rendered: result.join(''), score: totalScore}; } @@ -425,12 +423,6 @@ fuzzy.match = function(pattern, str, opts) { // , extract: function(arg) { return arg.crying; } // } fuzzy.filter = function(pattern, arr, opts) { - if(!arr || arr.length === 0) { - return []; - } - if (typeof pattern !== 'string') { - return arr; - } opts = opts || {}; return arr .reduce(function(prev, element, idx, arr) { @@ -465,11 +457,6 @@ fuzzy.filter = function(pattern, arr, opts) { },{}],4:[function(require,module,exports){ -/* This program is free software. It comes without any warranty, to - * the extent permitted by applicable law. You can redistribute it - * and/or modify it under the terms of the Do What The Fuck You Want - * To Public License, Version 2, as published by Sam Hocevar. See - * http://www.wtfpl.net/ for more details. */ 'use strict'; module.exports = leftPad; @@ -505,7 +492,7 @@ function leftPad (str, len, ch) { while (true) { // add `ch` to `pad` if `len` is odd if (len & 1) pad += ch; - // divide `len` by 2, ditch the remainder + // devide `len` by 2, ditch the fraction len >>= 1; // "double" the `ch` so this operation count grows logarithmically on `len` // each time `ch` is "doubled", the `len` would need to be "doubled" too @@ -718,7 +705,14 @@ searchNode.addEventListener('keydown', function (e) { } }); -searchNode.addEventListener('input', function (e) { +var inputEventStr = void 0; +if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) { + inputEventStr = 'textinput'; // IE 6-11 +} else { + inputEventStr = 'input'; // normal browsers +} + +searchNode.addEventListener(inputEventStr, function (e) { document.body.classList.remove('no-input'); autocompleteNode.innerHTML = ''; if (inputNode.value.trim() === '') return; @@ -867,4 +861,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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eEIsQ0FBNEIsVUFBNUI7QUFDRDs7QUFFRCxTQUFTLElBQVQsQ0FBYyxLQUFkLENBQW9CLE9BQXBCLEdBQThCLEdBQTlCOztBQUVBLE9BQU8sVUFBUCxHQUFvQixVQUFwQiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJleHBvcnRzLnJlbW92ZSA9IHJlbW92ZURpYWNyaXRpY3M7XG5cbnZhciByZXBsYWNlbWVudExpc3QgPSBbXG4gIHtcbiAgICBiYXNlOiAnICcsXG4gICAgY2hhcnM6IFwiXFx1MDBBMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJzAnLFxuICAgIGNoYXJzOiBcIlxcdTA3QzBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBJyxcbiAgICBjaGFyczogXCJcXHUyNEI2XFx1RkYyMVxcdTAwQzBcXHUwMEMxXFx1MDBDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHUwMEMzXFx1MDEwMFxcdTAxMDJcXHUxRUIwXFx1MUVBRVxcdTFFQjRcXHUxRUIyXFx1MDIyNlxcdTAxRTBcXHUwMEM0XFx1MDFERVxcdTFFQTJcXHUwMEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBQScsXG4gICAgY2hhcnM6IFwiXFx1QTczMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FFJyxcbiAgICBjaGFyczogXCJcXHUwMEM2XFx1MDFGQ1xcdTAxRTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBTycsXG4gICAgY2hhcnM6IFwiXFx1QTczNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FVJyxcbiAgICBjaGFyczogXCJcXHVBNzM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzhcXHVBNzNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdCJyxcbiAgICBjaGFyczogXCJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQycsXG4gICAgY2hhcnM6IFwiXFx1MjRiOFxcdWZmMjNcXHVBNzNFXFx1MUUwOFxcdTAxMDZcXHUwMDQzXFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDBDN1xcdTAxODdcXHUwMjNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCOVxcdUZGMjRcXHUxRTBBXFx1MDEwRVxcdTFFMENcXHUxRTEwXFx1MUUxMlxcdTFFMEVcXHUwMTEwXFx1MDE4QVxcdTAxODlcXHUxRDA1XFx1QTc3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RoJyxcbiAgICBjaGFyczogXCJcXHUwMEQwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRFonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjFcXHUwMUM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjJcXHUwMUM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRScsXG4gICAgY2hhcnM6IFwiXFx1MDI1QlxcdTI0QkFcXHVGRjI1XFx1MDBDOFxcdTAwQzlcXHUwMENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxcdTAwQ0JcXHUxRUJBXFx1MDExQVxcdTAyMDRcXHUwMjA2XFx1MUVCOFxcdTFFQzZcXHUwMjI4XFx1MUUxQ1xcdTAxMThcXHUxRTE4XFx1MUUxQVxcdTAxOTBcXHUwMThFXFx1MUQwN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0YnLFxuICAgIGNoYXJzOiBcIlxcdUE3N0NcXHUyNEJCXFx1RkYyNlxcdTFFMUVcXHUwMTkxXFx1QTc3QlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0cnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXFx1MDI2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0gnLFxuICAgIGNoYXJzOiBcIlxcdTI0QkRcXHVGRjI4XFx1MDEyNFxcdTFFMjJcXHUxRTI2XFx1MDIxRVxcdTFFMjRcXHUxRTI4XFx1MUUyQVxcdTAxMjZcXHUyQzY3XFx1MkM3NVxcdUE3OERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdJJyxcbiAgICBjaGFyczogXCJcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0onLFxuICAgIGNoYXJzOiBcIlxcdTI0QkZcXHVGRjJBXFx1MDEzNFxcdTAyNDhcXHUwMjM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSycsXG4gICAgY2hhcnM6IFwiXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0wnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzFcXHVGRjJDXFx1MDEzRlxcdTAxMzlcXHUwMTNEXFx1MUUzNlxcdTFFMzhcXHUwMTNCXFx1MUUzQ1xcdTFFM0FcXHUwMTQxXFx1MDIzRFxcdTJDNjJcXHUyQzYwXFx1QTc0OFxcdUE3NDZcXHVBNzgwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTEonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ00nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcXHUwM0ZCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTicsXG4gICAgY2hhcnM6IFwiXFx1QTdBNFxcdTAyMjBcXHUyNEMzXFx1RkYyRVxcdTAxRjhcXHUwMTQzXFx4RDFcXHUxRTQ0XFx1MDE0N1xcdTFFNDZcXHUwMTQ1XFx1MUU0QVxcdTFFNDhcXHUwMTlEXFx1QTc5MFxcdTFEMEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05qJyxcbiAgICBjaGFyczogXCJcXHUwMUNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTycsXG4gICAgY2hhcnM6IFwiXFx1MjRDNFxcdUZGMkZcXHhEMlxceEQzXFx4RDRcXHUxRUQyXFx1MUVEMFxcdTFFRDZcXHUxRUQ0XFx4RDVcXHUxRTRDXFx1MDIyQ1xcdTFFNEVcXHUwMTRDXFx1MUU1MFxcdTFFNTJcXHUwMTRFXFx1MDIyRVxcdTAyMzBcXHhENlxcdTAyMkFcXHUxRUNFXFx1MDE1MFxcdTAxRDFcXHUwMjBDXFx1MDIwRVxcdTAxQTBcXHUxRURDXFx1MUVEQVxcdTFFRTBcXHUxRURFXFx1MUVFMlxcdTFFQ0NcXHUxRUQ4XFx1MDFFQVxcdTAxRUNcXHhEOFxcdTAxRkVcXHUwMTg2XFx1MDE5RlxcdUE3NEFcXHVBNzRDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPSScsXG4gICAgY2hhcnM6IFwiXFx1MDFBMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09PJyxcbiAgICBjaGFyczogXCJcXHVBNzRFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT1UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdQJyxcbiAgICBjaGFyczogXCJcXHUyNEM1XFx1RkYzMFxcdTFFNTRcXHUxRTU2XFx1MDFBNFxcdTJDNjNcXHVBNzUwXFx1QTc1MlxcdUE3NTRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdRJyxcbiAgICBjaGFyczogXCJcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1InLFxuICAgIGNoYXJzOiBcIlxcdTI0QzdcXHVGRjMyXFx1MDE1NFxcdTFFNThcXHUwMTU4XFx1MDIxMFxcdTAyMTJcXHUxRTVBXFx1MUU1Q1xcdTAxNTZcXHUxRTVFXFx1MDI0Q1xcdTJDNjRcXHVBNzVBXFx1QTdBNlxcdUE3ODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdTJyxcbiAgICBjaGFyczogXCJcXHUyNEM4XFx1RkYzM1xcdTFFOUVcXHUwMTVBXFx1MUU2NFxcdTAxNUNcXHUxRTYwXFx1MDE2MFxcdTFFNjZcXHUxRTYyXFx1MUU2OFxcdTAyMThcXHUwMTVFXFx1MkM3RVxcdUE3QThcXHVBNzg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBERVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RaJyxcbiAgICBjaGFyczogXCJcXHVBNzI4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVScsXG4gICAgY2hhcnM6IFwiXFx1MjRDQVxcdUZGMzVcXHhEOVxceERBXFx4REJcXHUwMTY4XFx1MUU3OFxcdTAxNkFcXHUxRTdBXFx1MDE2Q1xceERDXFx1MDFEQlxcdTAxRDdcXHUwMUQ1XFx1MDFEOVxcdTFFRTZcXHUwMTZFXFx1MDE3MFxcdTAxRDNcXHUwMjE0XFx1MDIxNlxcdTAxQUZcXHUxRUVBXFx1MUVFOFxcdTFFRUVcXHUxRUVDXFx1MUVGMFxcdTFFRTRcXHUxRTcyXFx1MDE3MlxcdTFFNzZcXHUxRTc0XFx1MDI0NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1YnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWWScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1cnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1gnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0RcXHVGRjM4XFx1MUU4QVxcdTFFOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdZJyxcbiAgICBjaGFyczogXCJcXHUyNENFXFx1RkYzOVxcdTFFRjJcXHhERFxcdTAxNzZcXHUxRUY4XFx1MDIzMlxcdTFFOEVcXHUwMTc4XFx1MUVGNlxcdTFFRjRcXHUwMUIzXFx1MDI0RVxcdTFFRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdaJyxcbiAgICBjaGFyczogXCJcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYScsXG4gICAgY2hhcnM6IFwiXFx1MjREMFxcdUZGNDFcXHUxRTlBXFx1MDBFMFxcdTAwRTFcXHUwMEUyXFx1MUVBN1xcdTFFQTVcXHUxRUFCXFx1MUVBOVxcdTAwRTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxcdTAwRTRcXHUwMURGXFx1MUVBM1xcdTAwRTVcXHUwMUZCXFx1MDFDRVxcdTAyMDFcXHUwMjAzXFx1MUVBMVxcdTFFQURcXHUxRUI3XFx1MUUwMVxcdTAxMDVcXHUyQzY1XFx1MDI1MFxcdTAyNTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhYScsXG4gICAgY2hhcnM6IFwiXFx1QTczM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FlJyxcbiAgICBjaGFyczogXCJcXHUwMEU2XFx1MDFGRFxcdTAxRTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhbycsXG4gICAgY2hhcnM6IFwiXFx1QTczNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F1JyxcbiAgICBjaGFyczogXCJcXHVBNzM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXYnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzlcXHVBNzNCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXknLFxuICAgIGNoYXJzOiBcIlxcdUE3M0RcIixcbiAgfSwge1xuICAgIGJhc2U6ICdiJyxcbiAgICBjaGFyczogXCJcXHUyNEQxXFx1RkY0MlxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTAxODBcXHUwMTgzXFx1MDI1M1xcdTAxODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdjJyxcbiAgICBjaGFyczogXCJcXHVGRjQzXFx1MjREMlxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkJyxcbiAgICBjaGFyczogXCJcXHUyNEQzXFx1RkY0NFxcdTFFMEJcXHUwMTBGXFx1MUUwRFxcdTFFMTFcXHUxRTEzXFx1MUUwRlxcdTAxMTFcXHUwMThDXFx1MDI1NlxcdTAyNTdcXHUwMThCXFx1MTNFN1xcdTA1MDFcXHVBN0FBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGM1xcdTAxQzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdlJyxcbiAgICBjaGFyczogXCJcXHUyNEQ0XFx1RkY0NVxcdTAwRThcXHUwMEU5XFx1MDBFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHUwMEVCXFx1MUVCQlxcdTAxMUJcXHUwMjA1XFx1MDIwN1xcdTFFQjlcXHUxRUM3XFx1MDIyOVxcdTFFMURcXHUwMTE5XFx1MUUxOVxcdTFFMUJcXHUwMjQ3XFx1MDFERFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDVcXHVGRjQ2XFx1MUUxRlxcdTAxOTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZicsXG4gICAgY2hhcnM6IFwiXFx1RkIwMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmZmwnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdnJyxcbiAgICBjaGFyczogXCJcXHUyNEQ2XFx1RkY0N1xcdTAxRjVcXHUwMTFEXFx1MUUyMVxcdTAxMUZcXHUwMTIxXFx1MDFFN1xcdTAxMjNcXHUwMUU1XFx1MDI2MFxcdUE3QTFcXHVBNzdGXFx1MUQ3OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaHYnLFxuICAgIGNoYXJzOiBcIlxcdTAxOTVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdpJyxcbiAgICBjaGFyczogXCJcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2onLFxuICAgIGNoYXJzOiBcIlxcdTI0RDlcXHVGRjRBXFx1MDEzNVxcdTAxRjBcXHUwMjQ5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaycsXG4gICAgY2hhcnM6IFwiXFx1MjREQVxcdUZGNEJcXHUxRTMxXFx1MDFFOVxcdTFFMzNcXHUwMTM3XFx1MUUzNVxcdTAxOTlcXHUyQzZBXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTdBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2wnLFxuICAgIGNoYXJzOiBcIlxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1xcdTAyNkRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ20nLFxuICAgIGNoYXJzOiBcIlxcdTI0RENcXHVGRjREXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MDI3MVxcdTAyNkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICduJyxcbiAgICBjaGFyczogXCJcXHUyNEREXFx1RkY0RVxcdTAxRjlcXHUwMTQ0XFx4RjFcXHUxRTQ1XFx1MDE0OFxcdTFFNDdcXHUwMTQ2XFx1MUU0QlxcdTFFNDlcXHUwMTlFXFx1MDI3MlxcdTAxNDlcXHVBNzkxXFx1QTdBNVxcdTA0M0JcXHUwNTA5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0NcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvJyxcbiAgICBjaGFyczogXCJcXHUyNERFXFx1RkY0RlxceEYyXFx4RjNcXHhGNFxcdTFFRDNcXHUxRUQxXFx1MUVEN1xcdTFFRDVcXHhGNVxcdTFFNERcXHUwMjJEXFx1MUU0RlxcdTAxNERcXHUxRTUxXFx1MUU1M1xcdTAxNEZcXHUwMjJGXFx1MDIzMVxceEY2XFx1MDIyQlxcdTFFQ0ZcXHUwMTUxXFx1MDFEMlxcdTAyMERcXHUwMjBGXFx1MDFBMVxcdTFFRERcXHUxRURCXFx1MUVFMVxcdTFFREZcXHUxRUUzXFx1MUVDRFxcdTFFRDlcXHUwMUVCXFx1MDFFRFxceEY4XFx1MDFGRlxcdUE3NEJcXHVBNzREXFx1MDI3NVxcdTAyNTRcXHUxRDExXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2UnLFxuICAgIGNoYXJzOiBcIlxcdTAxNTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvaScsXG4gICAgY2hhcnM6IFwiXFx1MDFBM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29vJyxcbiAgICBjaGFyczogXCJcXHVBNzRGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb3UnLFxuICAgIGNoYXJzOiBcIlxcdTAyMjNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdwJyxcbiAgICBjaGFyczogXCJcXHUyNERGXFx1RkY1MFxcdTFFNTVcXHUxRTU3XFx1MDFBNVxcdTFEN0RcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHUwM0MxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncScsXG4gICAgY2hhcnM6IFwiXFx1MjRFMFxcdUZGNTFcXHUwMjRCXFx1QTc1N1xcdUE3NTlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdyJyxcbiAgICBjaGFyczogXCJcXHUyNEUxXFx1RkY1MlxcdTAxNTVcXHUxRTU5XFx1MDE1OVxcdTAyMTFcXHUwMjEzXFx1MUU1QlxcdTFFNURcXHUwMTU3XFx1MUU1RlxcdTAyNERcXHUwMjdEXFx1QTc1QlxcdUE3QTdcXHVBNzgzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncycsXG4gICAgY2hhcnM6IFwiXFx1MjRFMlxcdUZGNTNcXHUwMTVCXFx1MUU2NVxcdTAxNURcXHUxRTYxXFx1MDE2MVxcdTFFNjdcXHUxRTYzXFx1MUU2OVxcdTAyMTlcXHUwMTVGXFx1MDIzRlxcdUE3QTlcXHVBNzg1XFx1MUU5QlxcdTAyODJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzcycsXG4gICAgY2hhcnM6IFwiXFx4REZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0JyxcbiAgICBjaGFyczogXCJcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0aCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3R6JyxcbiAgICBjaGFyczogXCJcXHVBNzI5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndScsXG4gICAgY2hhcnM6IFwiXFx1MjRFNFxcdUZGNTVcXHhGOVxceEZBXFx4RkJcXHUwMTY5XFx1MUU3OVxcdTAxNkJcXHUxRTdCXFx1MDE2RFxceEZDXFx1MDFEQ1xcdTAxRDhcXHUwMUQ2XFx1MDFEQVxcdTFFRTdcXHUwMTZGXFx1MDE3MVxcdTAxRDRcXHUwMjE1XFx1MDIxN1xcdTAxQjBcXHUxRUVCXFx1MUVFOVxcdTFFRUZcXHUxRUVEXFx1MUVGMVxcdTFFRTVcXHUxRTczXFx1MDE3M1xcdTFFNzdcXHUxRTc1XFx1MDI4OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3YnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2eScsXG4gICAgY2hhcnM6IFwiXFx1QTc2MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICd4JyxcbiAgICBjaGFyczogXCJcXHUyNEU3XFx1RkY1OFxcdTFFOEJcXHUxRThEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneScsXG4gICAgY2hhcnM6IFwiXFx1MjRFOFxcdUZGNTlcXHUxRUYzXFx4RkRcXHUwMTc3XFx1MUVGOVxcdTAyMzNcXHUxRThGXFx4RkZcXHUxRUY3XFx1MUU5OVxcdTFFRjVcXHUwMUI0XFx1MDI0RlxcdTFFRkZcIixcbiAgfSwge1xuICAgIGJhc2U6ICd6JyxcbiAgICBjaGFyczogXCJcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCIsXG4gIH1cbl07XG5cbnZhciBkaWFjcml0aWNzTWFwID0ge307XG5mb3IgKHZhciBpID0gMDsgaSA8IHJlcGxhY2VtZW50TGlzdC5sZW5ndGg7IGkgKz0gMSkge1xuICB2YXIgY2hhcnMgPSByZXBsYWNlbWVudExpc3RbaV0uY2hhcnM7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY2hhcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICBkaWFjcml0aWNzTWFwW2NoYXJzW2pdXSA9IHJlcGxhY2VtZW50TGlzdFtpXS5iYXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpYWNyaXRpY3Moc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15cXHUwMDAwLVxcdTAwN2VdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljc01hcFtjXSB8fCBjO1xuICB9KTtcbn1cbiIsIiFmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5mbGV4aWJpbGl0eT1lKCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscixsKXtmdW5jdGlvbiBuKGYsaSl7aWYoIXJbZl0pe2lmKCF0W2ZdKXt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFpJiZzKXJldHVybiBzKGYsITApO2lmKG8pcmV0dXJuIG8oZiwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitmK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgYz1yW2ZdPXtleHBvcnRzOnt9fTt0W2ZdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciByPXRbZl1bMV1bZV07cmV0dXJuIG4ocj9yOmUpfSxjLGMuZXhwb3J0cyxlLHQscixsKX1yZXR1cm4gcltmXS5leHBvcnRzfWZvcih2YXIgbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGwubGVuZ3RoO2YrKyluKGxbZl0pO3JldHVybiBufSh7MTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGwsbj0tMTtpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtc3RhcnRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImZsZXgtZW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJjZW50ZXJcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYmV0d2VlblwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oZS5saW5lcy5sZW5ndGgtMSksdD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWFyb3VuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHI9MiplLmZsZXhTdHlsZS5jcm9zc1NwYWNlLygyKmUubGluZXMubGVuZ3RoKSx0PXIvMjtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgZm9yKHI9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS9lLmxpbmVzLmxlbmd0aCx0PWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmU7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LGwuY3Jvc3MrPXIsdCs9bC5jcm9zc319LHt9XSwyOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO2xpbmU9ZS5saW5lc1srK3JdOylmb3IodD0tMTtjaGlsZD1saW5lLmNoaWxkcmVuWysrdF07KXt2YXIgbD1jaGlsZC5zdHlsZS5hbGlnblNlbGY7XCJhdXRvXCI9PT1sJiYobD1lLnN0eWxlLmFsaWduSXRlbXMpLFwiZmxleC1zdGFydFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQ6XCJmbGV4LWVuZFwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrbGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjpcImNlbnRlclwiPT09bD9jaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQrKGxpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXIpLzI6KGNoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCxjaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1saW5lLmNyb3NzLGNoaWxkLmZsZXhTdHlsZS5jcm9zcz1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlci1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUtY2hpbGQuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX19LHt9XSwzOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uIGwoZSxsKXt2YXIgdD1cInJvd1wiPT09bHx8XCJyb3ctcmV2ZXJzZVwiPT09bCxyPWUubWFpbkF4aXM7aWYocil7dmFyIG49dCYmXCJpbmxpbmVcIj09PXJ8fCF0JiZcImJsb2NrXCI9PT1yO258fChlLmZsZXhTdHlsZT17bWFpbjplLmZsZXhTdHlsZS5jcm9zcyxjcm9zczplLmZsZXhTdHlsZS5tYWluLG1haW5PZmZzZXQ6ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsY3Jvc3NPZmZzZXQ6ZS5mbGV4U3R5bGUubWFpbk9mZnNldCxtYWluQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQmVmb3JlLG1haW5BZnRlcjplLmZsZXhTdHlsZS5jcm9zc0FmdGVyLGNyb3NzQmVmb3JlOmUuZmxleFN0eWxlLm1haW5CZWZvcmUsY3Jvc3NBZnRlcjplLmZsZXhTdHlsZS5tYWluQWZ0ZXIsbWFpbklubmVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUsbWFpbklubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLGNyb3NzSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGNyb3NzSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcixtYWluQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLG1haW5Cb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLGNyb3NzQm9yZGVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUsY3Jvc3NCb3JkZXJBZnRlcjplLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXJ9KX1lbHNlIHQ/ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS53aWR0aCxjcm9zczplLnN0eWxlLmhlaWdodCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aH06ZS5mbGV4U3R5bGU9e21haW46ZS5zdHlsZS5oZWlnaHQsY3Jvc3M6ZS5zdHlsZS53aWR0aCxtYWluT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0V2lkdGgsbWFpbkJlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sY3Jvc3NCZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxtYWluSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxjcm9zc0lubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LG1haW5Cb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJCb3R0b21XaWR0aCxjcm9zc0JvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aH0sXCJjb250ZW50LWJveFwiPT09ZS5zdHlsZS5ib3hTaXppbmcmJihcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW4rPWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3MrPWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKTtlLm1haW5BeGlzPXQ/XCJpbmxpbmVcIjpcImJsb2NrXCIsZS5jcm9zc0F4aXM9dD9cImJsb2NrXCI6XCJpbmxpbmVcIixcIm51bWJlclwiPT10eXBlb2YgZS5zdHlsZS5mbGV4QmFzaXMmJihlLmZsZXhTdHlsZS5tYWluPWUuc3R5bGUuZmxleEJhc2lzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlciksZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4sZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcyxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW5PdXRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluT2Zmc2V0KSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzT3V0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0KSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5BZnRlciYmKGUuZmxleFN0eWxlLm1haW5PdXRlcis9ZS5mbGV4U3R5bGUubWFpbkFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJihlLmZsZXhTdHlsZS5jcm9zc091dGVyKz1lLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19LHt9XSw0OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U+MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhHcm93KX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVyblwiYXV0b1wiPT09bC5mbGV4U3R5bGUubWFpbj9sLmZsZXhTdHlsZS5tYWluPWwuZmxleFN0eWxlLm1haW5PZmZzZXQrcGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlOmwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw1OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZS5tYWluU3BhY2U8MCl7dmFyIHQ9bChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrcGFyc2VGbG9hdCh0LnN0eWxlLmZsZXhTaHJpbmspfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuIGwuZmxleFN0eWxlLm1haW4rPXBhcnNlRmxvYXQobC5zdHlsZS5mbGV4U2hyaW5rKS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDY6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtlLmxpbmVzPVt0PXttYWluOjAsY3Jvc3M6MCxjaGlsZHJlbjpbXX1dO2Zvcih2YXIgcixuPS0xO3I9ZS5jaGlsZHJlblsrK25dOylcIm5vd3JhcFwiPT09ZS5zdHlsZS5mbGV4V3JhcHx8MD09PXQuY2hpbGRyZW4ubGVuZ3RofHxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW58fGUuZmxleFN0eWxlLm1haW4tZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyPj10Lm1haW4rci5mbGV4U3R5bGUubWFpbk91dGVyPyh0Lm1haW4rPXIuZmxleFN0eWxlLm1haW5PdXRlcix0LmNyb3NzPU1hdGgubWF4KHQuY3Jvc3Msci5mbGV4U3R5bGUuY3Jvc3NPdXRlcikpOmUubGluZXMucHVzaCh0PXttYWluOnIuZmxleFN0eWxlLm1haW5PdXRlcixjcm9zczpyLmZsZXhTdHlsZS5jcm9zc091dGVyLGNoaWxkcmVuOltdfSksdC5jaGlsZHJlbi5wdXNoKHIpO2UuZmxleFN0eWxlLm1haW5MaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSx0Lm1haW4pfSwwKSxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBlK3QuY3Jvc3N9LDApLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbiYmKGUuZmxleFN0eWxlLm1haW49TWF0aC5tYXgoZS5mbGV4U3R5bGUubWFpbk9mZnNldCxlLmZsZXhTdHlsZS5tYWluTGluZXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzPU1hdGgubWF4KGUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGUuZmxleFN0eWxlLmNyb3NzTGluZXMrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpLGUuZmxleFN0eWxlLmNyb3NzU3BhY2U9ZS5mbGV4U3R5bGUuY3Jvc3MtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0xpbmVzLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluK2UuZmxleFN0eWxlLm1haW5CZWZvcmUrZS5mbGV4U3R5bGUubWFpbkFmdGVyLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MrZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwodCl7Zm9yKHZhciByLGw9LTE7cj10LmNoaWxkcmVuWysrbF07KWUoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHIsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKTtlKFwiLi9mbGV4LWRpcmVjdGlvblwiKSh0LHQuc3R5bGUuZmxleERpcmVjdGlvbiksZShcIi4vb3JkZXJcIikodCksZShcIi4vZmxleGJveC1saW5lc1wiKSh0KSxlKFwiLi9hbGlnbi1jb250ZW50XCIpKHQpLGw9LTE7Zm9yKHZhciBuO249dC5saW5lc1srK2xdOyluLm1haW5TcGFjZT10LmZsZXhTdHlsZS5tYWluLXQuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS10LmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci10LmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlci1uLm1haW4sZShcIi4vZmxleC1ncm93XCIpKG4pLGUoXCIuL2ZsZXgtc2hyaW5rXCIpKG4pLGUoXCIuL21hcmdpbi1tYWluXCIpKG4pLGUoXCIuL21hcmdpbi1jcm9zc1wiKShuKSxlKFwiLi9qdXN0aWZ5LWNvbnRlbnRcIikobix0LnN0eWxlLmp1c3RpZnlDb250ZW50LHQpO2UoXCIuL2FsaWduLWl0ZW1zXCIpKHQpfXQuZXhwb3J0cz1sfSx7XCIuL2FsaWduLWNvbnRlbnRcIjoxLFwiLi9hbGlnbi1pdGVtc1wiOjIsXCIuL2ZsZXgtZGlyZWN0aW9uXCI6MyxcIi4vZmxleC1ncm93XCI6NCxcIi4vZmxleC1zaHJpbmtcIjo1LFwiLi9mbGV4Ym94LWxpbmVzXCI6NixcIi4vanVzdGlmeS1jb250ZW50XCI6OCxcIi4vbWFyZ2luLWNyb3NzXCI6OSxcIi4vbWFyZ2luLW1haW5cIjoxMCxcIi4vb3JkZXJcIjoxMX1dLDg6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBsLG4sbyxmPXIuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxpPS0xO2lmKFwiZmxleC1lbmRcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJjZW50ZXJcIj09PXQpZm9yKGw9ZS5tYWluU3BhY2UvMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcInNwYWNlLWJldHdlZW5cIj09PXQpZm9yKG49ZS5tYWluU3BhY2UvKGUuY2hpbGRyZW4ubGVuZ3RoLTEpLGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGlmKFwic3BhY2UtYXJvdW5kXCI9PT10KWZvcihuPTIqZS5tYWluU3BhY2UvKDIqZS5jaGlsZHJlbi5sZW5ndGgpLGw9bi8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgZm9yKGw9MCxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXJ9fSx7fV0sOTpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTt0PWUuY2hpbGRyZW5bKytyXTspe3ZhciBsPTA7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKytsLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKytsO3ZhciBuPWUuY3Jvc3MtdC5mbGV4U3R5bGUuY3Jvc3NPdXRlcjtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYodC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmU9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJih0LmZsZXhTdHlsZS5jcm9zc0FmdGVyPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zcz90LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzT2Zmc2V0K3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXI6dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zcyt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyfX19LHt9XSwxMDpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0wLGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKytyLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYrK3I7aWYocj4wKXtmb3IobD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYodC5mbGV4U3R5bGUubWFpbkJlZm9yZT1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKHQuZmxleFN0eWxlLm1haW5BZnRlcj1lLm1haW5TcGFjZS9yKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW4/dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW5PZmZzZXQrdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI6dC5mbGV4U3R5bGUubWFpbk91dGVyPXQuZmxleFN0eWxlLm1haW4rdC5mbGV4U3R5bGUubWFpbkJlZm9yZSt0LmZsZXhTdHlsZS5tYWluQWZ0ZXI7ZS5tYWluU3BhY2U9MH19fSx7fV0sMTE6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD0vXihjb2x1bW58cm93KS1yZXZlcnNlJC87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4uc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLm9yZGVyLXQuc3R5bGUub3JkZXJ8fGUuaW5kZXgtdC5pbmRleH0pLGwudGVzdChlLnN0eWxlLmZsZXhEaXJlY3Rpb24pJiZlLmNoaWxkcmVuLnJldmVyc2UoKX19LHt9XSwxMjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe2Zvcih2YXIgbD1lLmxlbmd0aCxuPS0xOysrbjxsOyluIGluIGUmJihyPXQocixlW25dLG4pKTtyZXR1cm4gcn10LmV4cG9ydHM9bH0se31dLDEzOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtpKGYoZSkpfXZhciBuPWUoXCIuL3JlYWRcIiksbz1lKFwiLi93cml0ZVwiKSxmPWUoXCIuL3JlYWRBbGxcIiksaT1lKFwiLi93cml0ZUFsbFwiKTt0LmV4cG9ydHM9bCx0LmV4cG9ydHMucmVhZD1uLHQuZXhwb3J0cy53cml0ZT1vLHQuZXhwb3J0cy5yZWFkQWxsPWYsdC5leHBvcnRzLndyaXRlQWxsPWl9LHtcIi4vcmVhZFwiOjE1LFwiLi9yZWFkQWxsXCI6MTYsXCIuL3dyaXRlXCI6MTcsXCIuL3dyaXRlQWxsXCI6MTh9XSwxNDpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSx0LHIpe3ZhciBsPWVbdF0sZj1TdHJpbmcobCkubWF0Y2gobyk7aWYoIWYpe3ZhciBhPXQubWF0Y2gocyk7aWYoYSl7dmFyIGM9ZVtcImJvcmRlclwiK2FbMV0rXCJTdHlsZVwiXTtyZXR1cm5cIm5vbmVcIj09PWM/MDppW2xdfHwwfXJldHVybiBsfXZhciB5PWZbMV0seD1mWzJdO3JldHVyblwicHhcIj09PXg/MSp5OlwiY21cIj09PXg/LjM5MzcqeSo5NjpcImluXCI9PT14Pzk2Knk6XCJtbVwiPT09eD8uMzkzNyp5Kjk2LzEwOlwicGNcIj09PXg/MTIqeSo5Ni83MjpcInB0XCI9PT14Pzk2KnkvNzI6XCJyZW1cIj09PXg/MTYqeTpuKGwscil9ZnVuY3Rpb24gbihlLHQpe2Yuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjpub25lIWltcG9ydGFudDtjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7d2lkdGg6XCIrZStcIiFpbXBvcnRhbnRcIix0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk7dmFyIHI9Zi5vZmZzZXRXaWR0aDtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpLHJ9dC5leHBvcnRzPWw7dmFyIG89L14oWy0rXT9cXGQqXFwuP1xcZCspKCV8W2Etel0rKSQvLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPXttZWRpdW06NCxub25lOjAsdGhpY2s6Nix0aGluOjJ9LHM9L15ib3JkZXIoQm90dG9tfExlZnR8UmlnaHR8VG9wKVdpZHRoJC99LHt9XSwxNTpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9e2FsaWduQ29udGVudDpcInN0cmV0Y2hcIixhbGlnbkl0ZW1zOlwic3RyZXRjaFwiLGFsaWduU2VsZjpcImF1dG9cIixib3JkZXJCb3R0b21TdHlsZTpcIm5vbmVcIixib3JkZXJCb3R0b21XaWR0aDowLGJvcmRlckxlZnRTdHlsZTpcIm5vbmVcIixib3JkZXJMZWZ0V2lkdGg6MCxib3JkZXJSaWdodFN0eWxlOlwibm9uZVwiLGJvcmRlclJpZ2h0V2lkdGg6MCxib3JkZXJUb3BTdHlsZTpcIm5vbmVcIixib3JkZXJUb3BXaWR0aDowLGJveFNpemluZzpcImNvbnRlbnQtYm94XCIsZGlzcGxheTpcImlubGluZVwiLGZsZXhCYXNpczpcImF1dG9cIixmbGV4RGlyZWN0aW9uOlwicm93XCIsZmxleEdyb3c6MCxmbGV4U2hyaW5rOjEsZmxleFdyYXA6XCJub3dyYXBcIixqdXN0aWZ5Q29udGVudDpcImZsZXgtc3RhcnRcIixoZWlnaHQ6XCJhdXRvXCIsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5MZWZ0OjAsbWFyZ2luQm90dG9tOjAscGFkZGluZ1RvcDowLHBhZGRpbmdSaWdodDowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ0JvdHRvbTowLG1heEhlaWdodDpcIm5vbmVcIixtYXhXaWR0aDpcIm5vbmVcIixtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLG9yZGVyOjAscG9zaXRpb246XCJzdGF0aWNcIix3aWR0aDpcImF1dG9cIn0scj1lIGluc3RhbmNlb2YgRWxlbWVudDtpZihyKXt2YXIgbD1lLmhhc0F0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksaT1sP2UuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKTplLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiO2x8fGUuc2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiLGkpO3ZhciBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiZnZXRDb21wdXRlZFN0eWxlKGUpfHx7fTtmKHQscyk7dmFyIGM9ZS5jdXJyZW50U3R5bGV8fHt9O24odCxjKSxvKHQsaSk7Zm9yKHZhciB5IGluIHQpdFt5XT1hKHQseSxlKTt2YXIgeD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Qub2Zmc2V0SGVpZ2h0PXguaGVpZ2h0fHxlLm9mZnNldEhlaWdodCx0Lm9mZnNldFdpZHRoPXgud2lkdGh8fGUub2Zmc2V0V2lkdGh9dmFyIFM9e2VsZW1lbnQ6ZSxzdHlsZTp0fTtyZXR1cm4gU31mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtpZihsKWVbcl09dFtyXTtlbHNle3ZhciBuPXIucmVwbGFjZSgvW0EtWl0vZyxcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLG89biBpbiB0O28mJihlW3JdPXRbbl0pfX12YXIgZj1cIi1qcy1kaXNwbGF5XCJpbiB0O2YmJihlLmRpc3BsYXk9dFtcIi1qcy1kaXNwbGF5XCJdKX1mdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciByO3I9aS5leGVjKHQpOyl7dmFyIGw9clsxXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy1bYS16XS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKDEpLnRvVXBwZXJDYXNlKCl9KTtlW2xdPXJbMl19fWZ1bmN0aW9uIGYoZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2wmJiFzLnRlc3QocikmJihlW3JdPXRbcl0pfX10LmV4cG9ydHM9bDt2YXIgaT0vKFteXFxzOjtdKylcXHMqOlxccyooW147XSs/KVxccyooO3wkKS9nLHM9L14oYWxpZ25TZWxmfGhlaWdodHx3aWR0aCkkLyxhPWUoXCIuL2dldENvbXB1dGVkTGVuZ3RoXCIpfSx7XCIuL2dldENvbXB1dGVkTGVuZ3RoXCI6MTR9XSwxNjpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7dmFyIHQ9W107cmV0dXJuIG4oZSx0KSx0fWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIsbD1vKGUpLGk9W10scz0tMTtyPWUuY2hpbGROb2Rlc1srK3NdOyl7dmFyIGE9Mz09PXIubm9kZVR5cGUmJiEvXlxccyokLy50ZXN0KHIubm9kZVZhbHVlKTtpZihsJiZhKXt2YXIgYz1yO3I9ZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZsZXgtaXRlbVwiKSxjKSxyLmFwcGVuZENoaWxkKGMpfXZhciB5PXIgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHkpe3ZhciB4PW4ocix0KTtpZihsKXt2YXIgUz1yLnN0eWxlO1MuZGlzcGxheT1cImlubGluZS1ibG9ja1wiLFMucG9zaXRpb249XCJhYnNvbHV0ZVwiLHguc3R5bGU9ZihyKS5zdHlsZSxpLnB1c2goeCl9fX12YXIgbT17ZWxlbWVudDplLGNoaWxkcmVuOml9O3JldHVybiBsJiYobS5zdHlsZT1mKGUpLnN0eWxlLHQucHVzaChtKSksbX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUgaW5zdGFuY2VvZiBFbGVtZW50LHI9dCYmZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGw9dCYmZS5jdXJyZW50U3R5bGUmJmUuY3VycmVudFN0eWxlW1wiLWpzLWRpc3BsYXlcIl0sbj1pLnRlc3Qocil8fHMudGVzdChsKTtyZXR1cm4gbn10LmV4cG9ydHM9bDt2YXIgZj1lKFwiLi4vcmVhZFwiKSxpPS8oXnw7KVxccypkaXNwbGF5XFxzKjpcXHMqKGlubGluZS0pP2ZsZXhcXHMqKDt8JCkvaSxzPS9eKGlubGluZS0pP2ZsZXgkL2l9LHtcIi4uL3JlYWRcIjoxNX1dLDE3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtvKGUpO3ZhciB0PWUuZWxlbWVudC5zdHlsZSxyPVwiaW5saW5lXCI9PT1lLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO3QuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIix0LmRpc3BsYXk9XCJibG9ja1wiLHQucG9zaXRpb249XCJyZWxhdGl2ZVwiLHQud2lkdGg9bihlLmZsZXhTdHlsZVtyWzBdXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pLHQuaGVpZ2h0PW4oZS5mbGV4U3R5bGVbclsxXV0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckFmdGVyXCJdKTtmb3IodmFyIGwsZj0tMTtsPWUuY2hpbGRyZW5bKytmXTspe3ZhciBpPWwuZWxlbWVudC5zdHlsZSxzPVwiaW5saW5lXCI9PT1sLm1haW5BeGlzP1tcIm1haW5cIixcImNyb3NzXCJdOltcImNyb3NzXCIsXCJtYWluXCJdO2kuYm94U2l6aW5nPVwiY29udGVudC1ib3hcIixpLmRpc3BsYXk9XCJibG9ja1wiLGkucG9zaXRpb249XCJhYnNvbHV0ZVwiLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1swXV0mJihpLndpZHRoPW4obC5mbGV4U3R5bGVbc1swXV0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckFmdGVyXCJdKSksXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzFdXSYmKGkuaGVpZ2h0PW4obC5mbGV4U3R5bGVbc1sxXV0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckFmdGVyXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckFmdGVyXCJdKSksaS50b3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiU3RhcnRcIl0pLGkubGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJTdGFydFwiXSksaS5tYXJnaW5Ub3A9bihsLmZsZXhTdHlsZVtzWzFdK1wiQmVmb3JlXCJdKSxpLm1hcmdpblJpZ2h0PW4obC5mbGV4U3R5bGVbc1swXStcIkFmdGVyXCJdKSxpLm1hcmdpbkJvdHRvbT1uKGwuZmxleFN0eWxlW3NbMV0rXCJBZnRlclwiXSksaS5tYXJnaW5MZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIkJlZm9yZVwiXSl9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpNYXRoLm1heChlLDApK1wicHhcIn10LmV4cG9ydHM9bDt2YXIgbz1lKFwiLi4vZmxleGJveFwiKX0se1wiLi4vZmxleGJveFwiOjd9XSwxODpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0LHI9LTE7dD1lWysrcl07KW4odCl9dC5leHBvcnRzPWw7dmFyIG49ZShcIi4uL3dyaXRlXCIpfSx7XCIuLi93cml0ZVwiOjE3fV19LHt9LFsxM10pKDEzKX0pOyIsIi8qXG4gKiBGdXp6eVxuICogaHR0cHM6Ly9naXRodWIuY29tL215b3JrL2Z1enp5XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE1hdHQgWW9ya1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5cbihmdW5jdGlvbigpIHtcblxudmFyIHJvb3QgPSB0aGlzO1xuXG52YXIgZnV6enkgPSB7fTtcblxuLy8gVXNlIGluIG5vZGUgb3IgaW4gYnJvd3NlclxuaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1enp5O1xufSBlbHNlIHtcbiAgcm9vdC5mdXp6eSA9IGZ1enp5O1xufVxuXG4vLyBSZXR1cm4gYWxsIGVsZW1lbnRzIG9mIGBhcnJheWAgdGhhdCBoYXZlIGEgZnV6enlcbi8vIG1hdGNoIGFnYWluc3QgYHBhdHRlcm5gLlxuZnV6enkuc2ltcGxlRmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmZpbHRlcihmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gZnV6enkudGVzdChwYXR0ZXJuLCBzdHIpO1xuICB9KTtcbn07XG5cbi8vIERvZXMgYHBhdHRlcm5gIGZ1enp5IG1hdGNoIGBzdHJgP1xuZnV6enkudGVzdCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0cikge1xuICByZXR1cm4gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyKSAhPT0gbnVsbDtcbn07XG5cbi8vIElmIGBwYXR0ZXJuYCBtYXRjaGVzIGBzdHJgLCB3cmFwIGVhY2ggbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyBpbiBgb3B0cy5wcmVgIGFuZCBgb3B0cy5wb3N0YC4gSWYgbm8gbWF0Y2gsIHJldHVybiBudWxsXG5mdXp6eS5tYXRjaCA9IGZ1bmN0aW9uKHBhdHRlcm4sIHN0ciwgb3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdmFyIHBhdHRlcm5JZHggPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgbGVuID0gc3RyLmxlbmd0aFxuICAgICwgdG90YWxTY29yZSA9IDBcbiAgICAsIGN1cnJTY29yZSA9IDBcbiAgICAvLyBwcmVmaXhcbiAgICAsIHByZSA9IG9wdHMucHJlIHx8ICcnXG4gICAgLy8gc3VmZml4XG4gICAgLCBwb3N0ID0gb3B0cy5wb3N0IHx8ICcnXG4gICAgLy8gU3RyaW5nIHRvIGNvbXBhcmUgYWdhaW5zdC4gVGhpcyBtaWdodCBiZSBhIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZVxuICAgIC8vIHJhdyBzdHJpbmdcbiAgICAsIGNvbXBhcmVTdHJpbmcgPSAgb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHN0ciB8fCBzdHIudG9Mb3dlckNhc2UoKVxuICAgICwgY2g7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYW4gZXhhY3QgbWF0Y2ggd2l0aCBwYXR0ZXJuLCB0b3RhbFNjb3JlIHNob3VsZCBiZSBtYXhlZFxuICAgIHRvdGFsU2NvcmUgPSAoY29tcGFyZVN0cmluZyA9PT0gcGF0dGVybikgPyBJbmZpbml0eSA6IHRvdGFsU2NvcmU7XG4gICAgcmV0dXJuIHtyZW5kZXJlZDogcmVzdWx0LmpvaW4oJycpLCBzY29yZTogdG90YWxTY29yZX07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8vIFRoZSBub3JtYWwgZW50cnkgcG9pbnQuIEZpbHRlcnMgYGFycmAgZm9yIG1hdGNoZXMgYWdhaW5zdCBgcGF0dGVybmAuXG4vLyBJdCByZXR1cm5zIGFuIGFycmF5IHdpdGggbWF0Y2hpbmcgdmFsdWVzIG9mIHRoZSB0eXBlOlxuLy9cbi8vICAgICBbe1xuLy8gICAgICAgICBzdHJpbmc6ICAgJzxiPmxhaCcgLy8gVGhlIHJlbmRlcmVkIHN0cmluZ1xuLy8gICAgICAgLCBpbmRleDogICAgMiAgICAgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgICAsIG9yaWdpbmFsOiAnYmxhaCcgICAvLyBUaGUgb3JpZ2luYWwgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgIH1dXG4vL1xuLy8gYG9wdHNgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGJhZy4gRGV0YWlsczpcbi8vXG4vLyAgICBvcHRzID0ge1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYmVmb3JlIGEgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICAgcHJlOiAgICAgJzxiPidcbi8vXG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBhZnRlciBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgLCBwb3N0OiAgICAnPC9iPidcbi8vXG4vLyAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb24uIElucHV0IGlzIGFuIGVudHJ5IGluIHRoZSBnaXZlbiBhcnJgLFxuLy8gICAgICAgIC8vIG91dHB1dCBzaG91bGQgYmUgdGhlIHN0cmluZyB0byB0ZXN0IGBwYXR0ZXJuYCBhZ2FpbnN0LlxuLy8gICAgICAgIC8vIEluIHRoaXMgZXhhbXBsZSwgaWYgYGFyciA9IFt7Y3J5aW5nOiAna29hbGEnfV1gIHdlIHdvdWxkIHJldHVyblxuLy8gICAgICAgIC8vICdrb2FsYScuXG4vLyAgICAgICwgZXh0cmFjdDogZnVuY3Rpb24oYXJnKSB7IHJldHVybiBhcmcuY3J5aW5nOyB9XG4vLyAgICB9XG5mdXp6eS5maWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnIsIG9wdHMpIHtcbiAgaWYoIWFyciB8fCBhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICh0eXBlb2YgcGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUuIEl0IGNvbWVzIHdpdGhvdXQgYW55IHdhcnJhbnR5LCB0b1xuICAgICAqIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LiBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdFxuICAgICAqIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBEbyBXaGF0IFRoZSBGdWNrIFlvdSBXYW50XG4gICAgICogVG8gUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IFNhbSBIb2NldmFyLiBTZWVcbiAgICAgKiBodHRwOi8vd3d3Lnd0ZnBsLm5ldC8gZm9yIG1vcmUgZGV0YWlscy4gKi9cbid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gbGVmdFBhZDtcblxudmFyIGNhY2hlID0gW1xuICAnJyxcbiAgJyAnLFxuICAnICAnLFxuICAnICAgJyxcbiAgJyAgICAnLFxuICAnICAgICAnLFxuICAnICAgICAgJyxcbiAgJyAgICAgICAnLFxuICAnICAgICAgICAnLFxuICAnICAgICAgICAgJ1xuXTtcblxuZnVuY3Rpb24gbGVmdFBhZCAoc3RyLCBsZW4sIGNoKSB7XG4gIC8vIGNvbnZlcnQgYHN0cmAgdG8gYHN0cmluZ2BcbiAgc3RyID0gc3RyICsgJyc7XG4gIC8vIGBsZW5gIGlzIHRoZSBgcGFkYCdzIGxlbmd0aCBub3dcbiAgbGVuID0gbGVuIC0gc3RyLmxlbmd0aDtcbiAgLy8gZG9lc24ndCBuZWVkIHRvIHBhZFxuICBpZiAobGVuIDw9IDApIHJldHVybiBzdHI7XG4gIC8vIGBjaGAgZGVmYXVsdHMgdG8gYCcgJ2BcbiAgaWYgKCFjaCAmJiBjaCAhPT0gMCkgY2ggPSAnICc7XG4gIC8vIGNvbnZlcnQgYGNoYCB0byBgc3RyaW5nYFxuICBjaCA9IGNoICsgJyc7XG4gIC8vIGNhY2hlIGNvbW1vbiB1c2UgY2FzZXNcbiAgaWYgKGNoID09PSAnICcgJiYgbGVuIDwgMTApIHJldHVybiBjYWNoZVtsZW5dICsgc3RyO1xuICAvLyBgcGFkYCBzdGFydHMgd2l0aCBhbiBlbXB0eSBzdHJpbmdcbiAgdmFyIHBhZCA9ICcnO1xuICAvLyBsb29wXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgLy8gYWRkIGBjaGAgdG8gYHBhZGAgaWYgYGxlbmAgaXMgb2RkXG4gICAgaWYgKGxlbiAmIDEpIHBhZCArPSBjaDtcbiAgICAvLyBkaXZpZGUgYGxlbmAgYnkgMiwgZGl0Y2ggdGhlIHJlbWFpbmRlclxuICAgIGxlbiA+Pj0gMTtcbiAgICAvLyBcImRvdWJsZVwiIHRoZSBgY2hgIHNvIHRoaXMgb3BlcmF0aW9uIGNvdW50IGdyb3dzIGxvZ2FyaXRobWljYWxseSBvbiBgbGVuYFxuICAgIC8vIGVhY2ggdGltZSBgY2hgIGlzIFwiZG91YmxlZFwiLCB0aGUgYGxlbmAgd291bGQgbmVlZCB0byBiZSBcImRvdWJsZWRcIiB0b29cbiAgICAvLyBzaW1pbGFyIHRvIGZpbmRpbmcgYSB2YWx1ZSBpbiBiaW5hcnkgc2VhcmNoIHRyZWUsIGhlbmNlIE8obG9nKG4pKVxuICAgIGlmIChsZW4pIGNoICs9IGNoO1xuICAgIC8vIGBsZW5gIGlzIDAsIGV4aXQgdGhlIGxvb3BcbiAgICBlbHNlIGJyZWFrO1xuICB9XG4gIC8vIHBhZCBgc3RyYCFcbiAgcmV0dXJuIHBhZCArIHN0cjtcbn1cbiIsImNvbnN0IHNpbnRlcmtsYWFzID0gZnVuY3Rpb24gKCkge1xuICBjb25zb2xlLmxvZygnc2ludGVya2xhYXMgZWFzdGVyIGVnZyBhY3RpdmF0ZWQnKVxuICBjb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG4gIGNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbmNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbmNvbnN0IHNjaGVkdWxlSWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJylcbmNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVswXVxuY29uc3QgbmV4dEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzFdXG5jb25zdCBjdXJyZW50V2Vla05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpXG5jb25zdCBmYXZOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZhdicpXG5cbmlmIChGTEFHUy5pbmRleE9mKCdOT19GRUFUVVJFX0RFVEVDVCcpID09PSAtMSkge1xuICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NjaGVkdWxlJykuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20gIT09XG4gICAgICBkb2N1bWVudC5ib2R5LmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tKSB7XG4gICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gIH0gZWxzZSB7XG4gICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgICB9XG4gIH1cbn0gZWxzZSB7XG4gIGNvbnNvbGUubG9nKCdmZWF0dXJlIGRldGVjdGlvbiBpcyBPRkYnKVxufVxuXG5sZXQgc2VsZWN0ZWRSZXN1bHQgPSAtMVxubGV0IHNlbGVjdGVkVXNlclxubGV0IHJlc3VsdHMgPSBbXVxubGV0IG9mZnNldCA9IDBcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEZhdiAoKSB7XG4gIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKSkgcmV0dXJuXG4gIGNvbnN0IGZhdkNvZGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpLnNwbGl0KCc6JylcbiAgY29uc3QgZmF2ID0gVVNFUlMuZmlsdGVyKHVzZXIgPT4gdXNlci50eXBlID09PSBmYXZDb2RlWzBdICYmIHVzZXIuaW5kZXggPT09IE51bWJlcihmYXZDb2RlWzFdKSlcbiAgcmV0dXJuIGZhdlswXVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VGYXYgKGlzRmF2KSB7XG4gIGlmICghc2VsZWN0ZWRVc2VyKSByZXR1cm5cbiAgaWYgKGlzRmF2KSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmYXYnLCBzZWxlY3RlZFVzZXIudHlwZSArICc6JyArIHNlbGVjdGVkVXNlci5pbmRleClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2ZhdicpXG4gIH1cbiAgdXBkYXRlRmF2Tm9kZSgpXG59XG5cbmZ1bmN0aW9uIHVzZXJzRXF1YWwgKHVzZXIxLCB1c2VyMikge1xuICBpZiAodXNlcjEgPT0gbnVsbCB8fCB1c2VyMiA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHVzZXIxLnR5cGUgPT09IHVzZXIyLnR5cGUgJiYgdXNlcjEuaW5kZXggPT09IHVzZXIyLmluZGV4XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUZhdk5vZGUgKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODM4OydcbiAgfSBlbHNlIHtcbiAgICBmYXZOb2RlLmlubmVySFRNTCA9ICcmI3hFODNBJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVdlZWtUZXh0ICgpIHtcbiAgaWYgKG9mZnNldCA9PT0gMCkgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGBXZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fWBcbiAgZWxzZSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYDxzdHJvbmc+V2VlayAke2dldFdlZWsoKSArIG9mZnNldH08L3N0cm9uZz5gXG59XG5cbnVwZGF0ZVdlZWtUZXh0KClcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKChyZXN1bHRzLmxlbmd0aCAhPT0gMCkgJiYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpXG5cbiAgICBjb25zdCBjaGFuZ2UgPSBlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTFcbiAgICBzZWxlY3RlZFJlc3VsdCArPSBjaGFuZ2VcbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgPCAtMSkgc2VsZWN0ZWRSZXN1bHQgPSByZXN1bHRzLmxlbmd0aCAtIDFcbiAgICBlbHNlIGlmIChzZWxlY3RlZFJlc3VsdCA+IHJlc3VsdHMubGVuZ3RoIC0gMSkgc2VsZWN0ZWRSZXN1bHQgPSAtMVxuXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0ICE9PSAtMSkgYXV0b2NvbXBsZXRlTm9kZS5jaGlsZHJlbltzZWxlY3RlZFJlc3VsdF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKVxuICB9XG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduby1pbnB1dCcpXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgZHJhd2luZyBmb2N1cyBvbiBpdCAoc2FmYXJpKVxuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCBzZWxlY3Rpb24gZXZlbiB3aGVuIGZvY3VzaW5nIGFuIGlmcmFtZSAoY2hyb21lKVxuICBjb25zdCBvbGRWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUudmFsdWUgPSBvbGRWYWx1ZVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLWlucHV0JylcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuaWYgKHNjaGVkdWxlSWZyYW1lLnNyYyAhPT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdzZWFyY2hlZCcpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QixFQUE0QjtBQUNqQyxXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsSUFBSSxlQUFlLEdBQWYsS0FBdUIsRUFBM0IsRUFBK0I7QUFDN0IsV0FBUyxJQUFULENBQWMsU0FBZCxDQUF3QixHQUF4QixDQUE0QixVQUE1QjtBQUNEOztBQUVELFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsT0FBcEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cmluZyk7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmluZ2A/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHJpbmcpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmluZ2AsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyaW5nIHx8IHN0cmluZy50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaCwgY29tcGFyZUNoYXI7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJpbmdbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRldmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgZnJhY3Rpb25cbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVsxXVxuY29uc3QgY3VycmVudFdlZWtOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmN1cnJlbnQnKVxuY29uc3QgZmF2Tm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mYXYnKVxuXG5pZiAoRkxBR1MuaW5kZXhPZignTk9fRkVBVFVSRV9ERVRFQ1QnKSA9PT0gLTEpIHtcbiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpLmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tICE9PVxuICAgICAgZG9jdW1lbnQuYm9keS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSkge1xuICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gICAgfVxuICB9XG59IGVsc2Uge1xuICBjb25zb2xlLmxvZygnZmVhdHVyZSBkZXRlY3Rpb24gaXMgT0ZGJylcbn1cblxubGV0IHNlbGVjdGVkUmVzdWx0ID0gLTFcbmxldCBzZWxlY3RlZFVzZXJcbmxldCByZXN1bHRzID0gW11cbmxldCBvZmZzZXQgPSAwXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IFVTRVJTLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxubGV0IGlucHV0RXZlbnRTdHJcbmlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSAhPT0gLTEgfHxcbiAgICBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdUcmlkZW50LycpID4gMCkge1xuICBpbnB1dEV2ZW50U3RyID0gJ3RleHRpbnB1dCcgLy8gSUUgNi0xMVxufSBlbHNlIHtcbiAgaW5wdXRFdmVudFN0ciA9ICdpbnB1dCcgLy8gbm9ybWFsIGJyb3dzZXJzXG59XG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcihpbnB1dEV2ZW50U3RyLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8taW5wdXQnKVxuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5pZiAoc2NoZWR1bGVJZnJhbWUuc3JjICE9PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 -- cgit v1.1 From f03a20dec91879984a961342e2d20adb61c05ea0 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 11:34:26 +0100 Subject: fixed keyboard not closing on iOS safari --- public/javascripts/bundle.js | 5 ++++- public/javascripts/main.js | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index da2840d..5f823d2 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -803,6 +803,9 @@ window.addEventListener('blur', function () { var oldValue = inputNode.value; inputNode.value = ''; inputNode.value = oldValue; + + // this will hide the keyboard (iOS safari) + document.activeElement.blur(); }); searchNode.addEventListener('blur', function (e) { @@ -861,4 +864,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QixFQUE0QjtBQUNqQyxXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsSUFBSSxlQUFlLEdBQWYsS0FBdUIsRUFBM0IsRUFBK0I7QUFDN0IsV0FBUyxJQUFULENBQWMsU0FBZCxDQUF3QixHQUF4QixDQUE0QixVQUE1QjtBQUNEOztBQUVELFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsT0FBcEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cmluZyk7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmluZ2A/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHJpbmcpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmluZ2AsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyaW5nIHx8IHN0cmluZy50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaCwgY29tcGFyZUNoYXI7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJpbmdbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRldmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgZnJhY3Rpb25cbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVsxXVxuY29uc3QgY3VycmVudFdlZWtOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmN1cnJlbnQnKVxuY29uc3QgZmF2Tm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mYXYnKVxuXG5pZiAoRkxBR1MuaW5kZXhPZignTk9fRkVBVFVSRV9ERVRFQ1QnKSA9PT0gLTEpIHtcbiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpLmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tICE9PVxuICAgICAgZG9jdW1lbnQuYm9keS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSkge1xuICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gICAgfVxuICB9XG59IGVsc2Uge1xuICBjb25zb2xlLmxvZygnZmVhdHVyZSBkZXRlY3Rpb24gaXMgT0ZGJylcbn1cblxubGV0IHNlbGVjdGVkUmVzdWx0ID0gLTFcbmxldCBzZWxlY3RlZFVzZXJcbmxldCByZXN1bHRzID0gW11cbmxldCBvZmZzZXQgPSAwXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IFVTRVJTLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxubGV0IGlucHV0RXZlbnRTdHJcbmlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSAhPT0gLTEgfHxcbiAgICBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdUcmlkZW50LycpID4gMCkge1xuICBpbnB1dEV2ZW50U3RyID0gJ3RleHRpbnB1dCcgLy8gSUUgNi0xMVxufSBlbHNlIHtcbiAgaW5wdXRFdmVudFN0ciA9ICdpbnB1dCcgLy8gbm9ybWFsIGJyb3dzZXJzXG59XG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcihpbnB1dEV2ZW50U3RyLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8taW5wdXQnKVxuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5pZiAoc2NoZWR1bGVJZnJhbWUuc3JjICE9PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcbn1cblxuZG9jdW1lbnQuYm9keS5zdHlsZS5vcGFjaXR5ID0gJzEnXG5cbndpbmRvdy5lYXN0ZXJFZ2dzID0gZWFzdGVyRWdnc1xuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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RCxNQTBCTyxJQUFJLFVBQVUsS0FBVixLQUFvQixFQUF4QixFQUE0QjtBQUNqQyxXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsSUFBSSxlQUFlLEdBQWYsS0FBdUIsRUFBM0IsRUFBK0I7QUFDN0IsV0FBUyxJQUFULENBQWMsU0FBZCxDQUF3QixHQUF4QixDQUE0QixVQUE1QjtBQUNEOztBQUVELFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsT0FBcEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cmluZyk7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmluZ2A/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHJpbmcpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmluZ2AsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyaW5nIHx8IHN0cmluZy50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaCwgY29tcGFyZUNoYXI7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJpbmdbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRldmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgZnJhY3Rpb25cbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVsxXVxuY29uc3QgY3VycmVudFdlZWtOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmN1cnJlbnQnKVxuY29uc3QgZmF2Tm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mYXYnKVxuXG5pZiAoRkxBR1MuaW5kZXhPZignTk9fRkVBVFVSRV9ERVRFQ1QnKSA9PT0gLTEpIHtcbiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpLmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tICE9PVxuICAgICAgZG9jdW1lbnQuYm9keS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSkge1xuICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gICAgfVxuICB9XG59IGVsc2Uge1xuICBjb25zb2xlLmxvZygnZmVhdHVyZSBkZXRlY3Rpb24gaXMgT0ZGJylcbn1cblxubGV0IHNlbGVjdGVkUmVzdWx0ID0gLTFcbmxldCBzZWxlY3RlZFVzZXJcbmxldCByZXN1bHRzID0gW11cbmxldCBvZmZzZXQgPSAwXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IFVTRVJTLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxubGV0IGlucHV0RXZlbnRTdHJcbmlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSAhPT0gLTEgfHxcbiAgICBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdUcmlkZW50LycpID4gMCkge1xuICBpbnB1dEV2ZW50U3RyID0gJ3RleHRpbnB1dCcgLy8gSUUgNi0xMVxufSBlbHNlIHtcbiAgaW5wdXRFdmVudFN0ciA9ICdpbnB1dCcgLy8gbm9ybWFsIGJyb3dzZXJzXG59XG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcihpbnB1dEV2ZW50U3RyLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG5cbiAgLy8gdGhpcyB3aWxsIGhpZGUgdGhlIGtleWJvYXJkIChpT1Mgc2FmYXJpKVxuICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLWlucHV0JylcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuaWYgKHNjaGVkdWxlSWZyYW1lLnNyYyAhPT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdzZWFyY2hlZCcpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 7daedcf..63c3f66 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -185,6 +185,9 @@ window.addEventListener('blur', function () { const oldValue = inputNode.value inputNode.value = '' inputNode.value = oldValue + + // this will hide the keyboard (iOS safari) + document.activeElement.blur() }) searchNode.addEventListener('blur', function (e) { -- cgit v1.1 From 3b14fbf32d87668a3fbbf561a4d6dfaddaa0bcc9 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 12:17:30 +0100 Subject: switched to input[type='search'] --- public/javascripts/bundle.js | 6 +++--- public/javascripts/easterEggs.js | 2 +- public/javascripts/main.js | 2 +- public/stylesheets/print.css | 2 +- public/stylesheets/style.css | 25 +++++++++++++++++++++---- views/index.jade | 2 +- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 5f823d2..04d3ec2 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -511,7 +511,7 @@ function leftPad (str, len, ch) { var sinterklaas = function sinterklaas() { console.log('sinterklaas easter egg activated'); var searchNode = document.querySelector('#search'); - var inputNode = searchNode.querySelector('input[type="text"]'); + var inputNode = searchNode.querySelector('input[type="search"]'); var autocompleteNode = document.querySelector('.autocomplete'); var autocomplete = false; var lyrics = [[{ woord: 'Hoor ', time: 0 }, { woord: 'wie ', time: 0.3 }, { woord: 'klopt ', time: 0.6 }, { woord: 'daar ', time: 0.9 }, { woord: 'kind', time: 1.2 }, { woord: '\'ren', time: 1.5 }], [{ woord: 'Hoor ', time: 1.8 }, { woord: 'wie ', time: 2.1 }, { woord: 'klopt ', time: 2.5 }, { woord: 'daar ', time: 2.8 }, { woord: 'kind', time: 3.1 }, { woord: '\'ren', time: 3.4 }], [{ woord: 'Hoor ', time: 3.7 }, { woord: 'wie ', time: 4 }, { woord: 'tikt ', time: 4.3 }, { woord: 'daar ', time: 4.6 }, { woord: 'zacht', time: 4.8 }, { woord: 'jes ', time: 5.3 }, { woord: 'tegen ', time: 5.5 }, { woord: '\'t ', time: 6.1 }, { woord: 'raam ', time: 6.2 }]]; @@ -628,7 +628,7 @@ var getWeek = require('./getWeek'); var easterEggs = require('./easterEggs'); var searchNode = document.querySelector('#search'); -var inputNode = searchNode.querySelector('input[type="text"]'); +var inputNode = searchNode.querySelector('input[type="search"]'); var autocompleteNode = document.querySelector('.autocomplete'); var scheduleIframe = document.querySelector('#schedule'); var prevButton = document.querySelectorAll('#week-selector button')[0]; @@ -864,4 +864,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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RCxNQTBCTyxJQUFJLFVBQVUsS0FBVixLQUFvQixFQUF4QixFQUE0QjtBQUNqQyxXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsSUFBSSxlQUFlLEdBQWYsS0FBdUIsRUFBM0IsRUFBK0I7QUFDN0IsV0FBUyxJQUFULENBQWMsU0FBZCxDQUF3QixHQUF4QixDQUE0QixVQUE1QjtBQUNEOztBQUVELFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsT0FBcEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cmluZyk7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmluZ2A/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHJpbmcpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmluZ2AsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyaW5nIHx8IHN0cmluZy50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaCwgY29tcGFyZUNoYXI7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJpbmdbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRldmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgZnJhY3Rpb25cbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJylcbiAgY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuICBsZXQgYXV0b2NvbXBsZXRlID0gZmFsc2VcbiAgY29uc3QgbHlyaWNzID0gW1xuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMC4zfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDAuNn0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDAuOX0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMS4yfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDEuNX1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMS44fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAyLjF9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMi41fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMi44fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAzLjF9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMy40fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAzLjd9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDR9LFxuICAgICAge3dvb3JkOiAndGlrdCAnLCB0aW1lOiA0LjN9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiA0LjZ9LFxuICAgICAge3dvb3JkOiAnemFjaHQnLCB0aW1lOiA0Ljh9LFxuICAgICAge3dvb3JkOiAnamVzICcsIHRpbWU6IDUuM30sXG4gICAgICB7d29vcmQ6ICd0ZWdlbiAnLCB0aW1lOiA1LjV9LFxuICAgICAge3dvb3JkOiAnXFwndCAnLCB0aW1lOiA2LjF9LFxuICAgICAge3dvb3JkOiAncmFhbSAnLCB0aW1lOiA2LjJ9XG4gICAgXVxuICBdXG5cbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG5cbiAgbHlyaWNzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICByb3cuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHdvcmRJbmRleCA9PT0gMCkgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcbiAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyICs9IHdvcmQud29vcmRcbiAgICAgIH0sIHdvcmQudGltZSAqIDEwMDApXG4gICAgICBpZiAobHlyaWNzLmxlbmd0aCA9PT0gcm93SW5kZXggKyAxICYmXG4gICAgICAgICAgbHlyaWNzW3Jvd0luZGV4XS5sZW5ndGggPT09IHdvcmRJbmRleCArIDEpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIGlucHV0Tm9kZS52YWx1ZSA9IG9yaWdpbmFsVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJ1pvZWtlbidcbiAgICAgICAgICBhdXRvY29tcGxldGUgPSB0cnVlXG4gICAgICAgIH0sIHdvcmQudGltZSAqIDEwMDAgKyAxMDAwKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cblxuICAgIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZUx5cmljcyA9IFtcbiAgICAgIGAndCBJcyBlZW4gdnJlZW1kJ2xpbmcgemVrZXIsYCxcbiAgICAgIGBkaWUgdmVyZHdhYWx0IGlzIHpla2VyLmAsXG4gICAgICBgJ2sgWmFsIGVlbnMgZXZlbiB2cmFnZW4gbmFhciB6aWpuIG5hYW06YFxuICAgIF1cblxuICAgIGF1dG9jb21wbGV0ZUx5cmljcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgICAgcmVzdWx0Tm9kZS5pbm5lckhUTUwgPSByb3dcbiAgICAgIGF1dG9jb21wbGV0ZU5vZGUuYXBwZW5kQ2hpbGQocmVzdWx0Tm9kZSlcbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludCBuaWtvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50bmlrb2xhYXMnKSB7XG4gICAgICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvanNPaUtKM2tLWE0/c3RhcnQ9MzAnXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgc2ludGVya2xhYXMgfVxuIiwidmFyIGxlZnRQYWQgPSByZXF1aXJlKCdsZWZ0LXBhZCcpXG52YXIgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5cbmZ1bmN0aW9uIGdldFVSTE9mVXNlcnMgKHdlZWtPZmZzZXQsIHR5cGUsIGlkKSB7XG4gIHJldHVybiBgLy8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9tZWV0aW5ncG9pbnRQcm94eS9Sb29zdGVycy1BTCUyRmRvYyUyRmRhZ3Jvb3N0ZXJzJTJGYCArXG4gICAgICBgJHsoZ2V0V2VlaygpICsgd2Vla09mZnNldCl9JTJGJHt0eXBlfSUyRiR7dHlwZX0ke2xlZnRQYWQoaWQsIDUsICcwJyl9Lmh0bWBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVUkxPZlVzZXJzXG4iLCIvLyBjb3BpZWQgZnJvbSBodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvZGFncm9vc3RlcnMvdW50aXNzY3JpcHRzLmpzLFxuLy8gd2VyZSB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZXkgZG8gdG8gYmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBnZXQgdGhlIHNhbWVcbi8vIHdlZWsgbnVtYmVyLlxuZnVuY3Rpb24gZ2V0V2VlayAoKSB7XG4gIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBkYXRlIG9iamVjdFxuICBjb25zdCB0YXJnZXQgPSBuZXcgRGF0ZSgpXG5cbiAgLy8gSVNPIHdlZWsgZGF0ZSB3ZWVrcyBzdGFydCBvbiBtb25kYXlcbiAgLy8gc28gY29ycmVjdCB0aGUgZGF5IG51bWJlclxuICBjb25zdCBkYXlOciA9ICh0YXJnZXQuZ2V0RGF5KCkgKyA2KSAlIDdcblxuICAvLyBJU08gODYwMSBzdGF0ZXMgdGhhdCB3ZWVrIDEgaXMgdGhlIHdlZWtcbiAgLy8gd2l0aCB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhhdCB5ZWFyLlxuICAvLyBTZXQgdGhlIHRhcmdldCBkYXRlIHRvIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgdGFyZ2V0LnNldERhdGUodGFyZ2V0LmdldERhdGUoKSAtIGRheU5yICsgMylcblxuICAvLyBTdG9yZSB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgb2YgdGhlIHRhcmdldCBkYXRlXG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSB0YXJnZXQudmFsdWVPZigpXG5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgdG8gdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyXG4gIC8vIEZpcnN0IHNldCB0aGUgdGFyZ2V0IHRvIGphbnVhcnkgZmlyc3RcbiAgdGFyZ2V0LnNldE1vbnRoKDAsIDEpXG4gIC8vIE5vdCBhIHRodXJzZGF5PyBDb3JyZWN0IHRoZSBkYXRlIHRvIHRoZSBuZXh0IHRodXJzZGF5XG4gIGlmICh0YXJnZXQuZ2V0RGF5KCkgIT09IDQpIHtcbiAgICB0YXJnZXQuc2V0TW9udGgoMCwgMSArICgoNCAtIHRhcmdldC5nZXREYXkoKSkgKyA3KSAlIDcpXG4gIH1cblxuICAvLyBUaGUgd2Vla251bWJlciBpcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGJldHdlZW4gdGhlXG4gIC8vIGZpcnN0IHRodXJzZGF5IG9mIHRoZSB5ZWFyIGFuZCB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHJldHVybiAxICsgTWF0aC5jZWlsKChmaXJzdFRodXJzZGF5IC0gdGFyZ2V0KSAvIDYwNDgwMDAwMCkgLy8gNjA0ODAwMDAwID0gNyAqIDI0ICogMzYwMCAqIDEwMDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRXZWVrXG4iLCIvKiBnbG9iYWwgZ2EgRkxBR1MgVVNFUlMgKi9cblxucmVxdWlyZSgnZmxleGliaWxpdHknKVxuXG5jb25zdCBmdXp6eSA9IHJlcXVpcmUoJ2Z1enp5Jylcbi8vIGNvbnN0IGdldFVzZXJzID0gcmVxdWlyZSgnLi9nZXRVc2VycycpXG5jb25zdCBnZXRVUkxPZlVzZXIgPSByZXF1aXJlKCcuL2dldFVSTE9mVXNlcicpXG5jb25zdCByZW1vdmVEaWFjcml0aWNzID0gcmVxdWlyZSgnZGlhY3JpdGljcycpLnJlbW92ZVxuY29uc3QgZ2V0V2VlayA9IHJlcXVpcmUoJy4vZ2V0V2VlaycpXG5jb25zdCBlYXN0ZXJFZ2dzID0gcmVxdWlyZSgnLi9lYXN0ZXJFZ2dzJylcblxuY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG5jb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG5jb25zdCBzY2hlZHVsZUlmcmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpXG5jb25zdCBwcmV2QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMF1cbmNvbnN0IG5leHRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd2Vlay1zZWxlY3RvciBidXR0b24nKVsxXVxuY29uc3QgY3VycmVudFdlZWtOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmN1cnJlbnQnKVxuY29uc3QgZmF2Tm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mYXYnKVxuXG5pZiAoRkxBR1MuaW5kZXhPZignTk9fRkVBVFVSRV9ERVRFQ1QnKSA9PT0gLTEpIHtcbiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY2hlZHVsZScpLmdldENsaWVudFJlY3RzKClbMF0uYm90dG9tICE9PVxuICAgICAgZG9jdW1lbnQuYm9keS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSkge1xuICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uID0gJ2h0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy8nXG4gICAgfVxuICB9XG59IGVsc2Uge1xuICBjb25zb2xlLmxvZygnZmVhdHVyZSBkZXRlY3Rpb24gaXMgT0ZGJylcbn1cblxubGV0IHNlbGVjdGVkUmVzdWx0ID0gLTFcbmxldCBzZWxlY3RlZFVzZXJcbmxldCByZXN1bHRzID0gW11cbmxldCBvZmZzZXQgPSAwXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRGYXYgKCkge1xuICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2JykpIHJldHVyblxuICBjb25zdCBmYXZDb2RlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmYXYnKS5zcGxpdCgnOicpXG4gIGNvbnN0IGZhdiA9IFVTRVJTLmZpbHRlcih1c2VyID0+IHVzZXIudHlwZSA9PT0gZmF2Q29kZVswXSAmJiB1c2VyLmluZGV4ID09PSBOdW1iZXIoZmF2Q29kZVsxXSkpXG4gIHJldHVybiBmYXZbMF1cbn1cblxuZnVuY3Rpb24gY2hhbmdlRmF2IChpc0Zhdikge1xuICBpZiAoIXNlbGVjdGVkVXNlcikgcmV0dXJuXG4gIGlmIChpc0Zhdikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmF2Jywgc2VsZWN0ZWRVc2VyLnR5cGUgKyAnOicgKyBzZWxlY3RlZFVzZXIuaW5kZXgpXG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmYXYnKVxuICB9XG4gIHVwZGF0ZUZhdk5vZGUoKVxufVxuXG5mdW5jdGlvbiB1c2Vyc0VxdWFsICh1c2VyMSwgdXNlcjIpIHtcbiAgaWYgKHVzZXIxID09IG51bGwgfHwgdXNlcjIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB1c2VyMS50eXBlID09PSB1c2VyMi50eXBlICYmIHVzZXIxLmluZGV4ID09PSB1c2VyMi5pbmRleFxufVxuXG5mdW5jdGlvbiB1cGRhdGVGYXZOb2RlICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzODsnXG4gIH0gZWxzZSB7XG4gICAgZmF2Tm9kZS5pbm5lckhUTUwgPSAnJiN4RTgzQSdcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVXZWVrVGV4dCAoKSB7XG4gIGlmIChvZmZzZXQgPT09IDApIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgV2VlayAke2dldFdlZWsoKSArIG9mZnNldH1gXG4gIGVsc2UgY3VycmVudFdlZWtOb2RlLmlubmVySFRNTCA9IGA8c3Ryb25nPldlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9PC9zdHJvbmc+YFxufVxuXG51cGRhdGVXZWVrVGV4dCgpXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gIGlmICgocmVzdWx0cy5sZW5ndGggIT09IDApICYmIChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKSkgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKVxuXG4gICAgY29uc3QgY2hhbmdlID0gZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xXG4gICAgc2VsZWN0ZWRSZXN1bHQgKz0gY2hhbmdlXG4gICAgaWYgKHNlbGVjdGVkUmVzdWx0IDwgLTEpIHNlbGVjdGVkUmVzdWx0ID0gcmVzdWx0cy5sZW5ndGggLSAxXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWRSZXN1bHQgPiByZXN1bHRzLmxlbmd0aCAtIDEpIHNlbGVjdGVkUmVzdWx0ID0gLTFcblxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCAhPT0gLTEpIGF1dG9jb21wbGV0ZU5vZGUuY2hpbGRyZW5bc2VsZWN0ZWRSZXN1bHRdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJylcbiAgfVxufSlcblxubGV0IGlucHV0RXZlbnRTdHJcbmlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSAhPT0gLTEgfHxcbiAgICBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdUcmlkZW50LycpID4gMCkge1xuICBpbnB1dEV2ZW50U3RyID0gJ3RleHRpbnB1dCcgLy8gSUUgNi0xMVxufSBlbHNlIHtcbiAgaW5wdXRFdmVudFN0ciA9ICdpbnB1dCcgLy8gbm9ybWFsIGJyb3dzZXJzXG59XG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcihpbnB1dEV2ZW50U3RyLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG5cbiAgLy8gdGhpcyB3aWxsIGhpZGUgdGhlIGtleWJvYXJkIChpT1Mgc2FmYXJpKVxuICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKGUpIHtcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xufSlcblxuZmF2Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJzRXF1YWwoZ2V0Q3VycmVudEZhdigpLCBzZWxlY3RlZFVzZXIpKSB7XG4gICAgY2hhbmdlRmF2KGZhbHNlKVxuICB9IGVsc2Uge1xuICAgIGNoYW5nZUZhdih0cnVlKVxuICB9XG59KVxuXG5jb25zdCBjdXJyZW50RmF2ID0gZ2V0Q3VycmVudEZhdigpXG5cbmlmIChjdXJyZW50RmF2KSB7XG4gIHNlbGVjdGVkVXNlciA9IGN1cnJlbnRGYXZcbiAgaW5wdXROb2RlLnZhbHVlID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuICB1cGRhdGVGYXZOb2RlKClcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2ggZmF2JywgZXZlbnRBY3Rpb24sIGV2ZW50TGFiZWwgfSlcbiAgfSlcbn0gZWxzZSBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLWlucHV0JylcbiAgaW5wdXROb2RlLmZvY3VzKClcbn1cblxuaWYgKHNjaGVkdWxlSWZyYW1lLnNyYyAhPT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdzZWFyY2hlZCcpXG59XG5cbmRvY3VtZW50LmJvZHkuc3R5bGUub3BhY2l0eSA9ICcxJ1xuXG53aW5kb3cuZWFzdGVyRWdncyA9IGVhc3RlckVnZ3NcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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RCxNQTBCTyxJQUFJLFVBQVUsS0FBVixLQUFvQixFQUF4QixFQUE0QjtBQUNqQyxXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsSUFBSSxlQUFlLEdBQWYsS0FBdUIsRUFBM0IsRUFBK0I7QUFDN0IsV0FBUyxJQUFULENBQWMsU0FBZCxDQUF3QixHQUF4QixDQUE0QixVQUE1QjtBQUNEOztBQUVELFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsT0FBcEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cmluZyk7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmluZ2A/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHJpbmcpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmluZ2AsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyaW5nIHx8IHN0cmluZy50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaCwgY29tcGFyZUNoYXI7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJpbmdbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRldmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgZnJhY3Rpb25cbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbmxldCBpbnB1dEV2ZW50U3RyXG5pZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgIT09IC0xIHx8XG4gICAgbmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignVHJpZGVudC8nKSA+IDApIHtcbiAgaW5wdXRFdmVudFN0ciA9ICd0ZXh0aW5wdXQnIC8vIElFIDYtMTFcbn0gZWxzZSB7XG4gIGlucHV0RXZlbnRTdHIgPSAnaW5wdXQnIC8vIG5vcm1hbCBicm93c2Vyc1xufVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoaW5wdXRFdmVudFN0ciwgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduby1pbnB1dCcpXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgZHJhd2luZyBmb2N1cyBvbiBpdCAoc2FmYXJpKVxuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCBzZWxlY3Rpb24gZXZlbiB3aGVuIGZvY3VzaW5nIGFuIGlmcmFtZSAoY2hyb21lKVxuICBjb25zdCBvbGRWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUudmFsdWUgPSBvbGRWYWx1ZVxuXG4gIC8vIHRoaXMgd2lsbCBoaWRlIHRoZSBrZXlib2FyZCAoaU9TIHNhZmFyaSlcbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKClcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCduby1pbnB1dCcpXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmlmIChzY2hlZHVsZUlmcmFtZS5zcmMgIT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= diff --git a/public/javascripts/easterEggs.js b/public/javascripts/easterEggs.js index 2d2745d..79fb6d9 100644 --- a/public/javascripts/easterEggs.js +++ b/public/javascripts/easterEggs.js @@ -1,7 +1,7 @@ const sinterklaas = function () { console.log('sinterklaas easter egg activated') const searchNode = document.querySelector('#search') - const inputNode = searchNode.querySelector('input[type="text"]') + const inputNode = searchNode.querySelector('input[type="search"]') const autocompleteNode = document.querySelector('.autocomplete') let autocomplete = false const lyrics = [ diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 63c3f66..895dd3f 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -10,7 +10,7 @@ const getWeek = require('./getWeek') const easterEggs = require('./easterEggs') const searchNode = document.querySelector('#search') -const inputNode = searchNode.querySelector('input[type="text"]') +const inputNode = searchNode.querySelector('input[type="search"]') const autocompleteNode = document.querySelector('.autocomplete') const scheduleIframe = document.querySelector('#schedule') const prevButton = document.querySelectorAll('#week-selector button')[0] diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css index dd17a42..b6c3110 100644 --- a/public/stylesheets/print.css +++ b/public/stylesheets/print.css @@ -11,7 +11,7 @@ max-width: inherit; } -#search input[type="text"] { +#search input[type="search"] { background-color: inherit; color: black; font-weight: bold; diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 869ae89..cda0b19 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -43,7 +43,7 @@ html, body { color: #FFFFFF; } -#search input[type='text'] { +#search input[type='search'] { display: block; background-color: #f6695e; color: inherit; @@ -57,16 +57,33 @@ html, body { transition: box-shadow 200ms ease-in-out; } -#search input[type='text']:focus { +#search input[type='search']:focus { background-color: #FFFFFF; color: #212121; box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } -#search input[type='text']:focus + button { +#search input[type='search']:focus + button { color: #212121; } +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { + display: none; +} + +input[tupe="search"]::-ms-clear { + width: 0; + height: 0; +} + +button::-moz-focus-inner { + border: 0; +} + + /* WebKit, Blink, Edge */ input::-webkit-input-placeholder { color: #FFCDD2; @@ -282,7 +299,7 @@ body.no-input #week-selector { transform: translateY(-75%); } - body.no-input #search input[type='text'] { + body.no-input #search input[type='search'] { background-color: #FFF; } diff --git a/views/index.jade b/views/index.jade index 941d657..dc4a5d6 100644 --- a/views/index.jade +++ b/views/index.jade @@ -14,7 +14,7 @@ block content .logo .text Rooster .input-wrapper - input(type='text', placeholder='Zoeken') + input(type='search', placeholder='Zoeken') button.material-icons.fav(tabindex='0', type='button')  button#overflow-button(type='button') i.material-icons  -- cgit v1.1 From 73af3c8dee488ba962e44343f1e57a5ca3deb428 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 12:48:14 +0100 Subject: add tooltip --- public/stylesheets/style.css | 24 ++++++++++++++++++++++++ views/index.jade | 2 ++ 2 files changed, 26 insertions(+) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index cda0b19..f569134 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -324,4 +324,28 @@ body.no-input #week-selector { body.no-input #search input:-ms-input-placeholder { color: #757575; } +} + +.tooltip { + display: none; +} + +body.no-input .tooltip { + display: block; + position: absolute; + background-color: white; + padding: 15px; + margin: 32px 8px; + border-radius: 2px; +} + +body.no-input .tooltip::before { + content: ''; + width: 24px; + height: 24px; + background-color: white; + top: -12px; + position: absolute; + transform: rotate(45deg); + z-index: -1; } \ No newline at end of file diff --git a/views/index.jade b/views/index.jade index dc4a5d6..6d2aa17 100644 --- a/views/index.jade +++ b/views/index.jade @@ -16,6 +16,8 @@ block content .input-wrapper input(type='search', placeholder='Zoeken') button.material-icons.fav(tabindex='0', type='button')  + .tooltip + span Voer hier een docenten afkorting, klas, leerlingen nummer of lokaal nummer in. button#overflow-button(type='button') i.material-icons  -- cgit v1.1 From fa4cb48e2ca2186a9fb82407a9d1febd438e61c7 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 13:00:18 +0100 Subject: improved tooltip --- public/stylesheets/style.css | 43 +++++++++++++++++++++++-------------------- views/index.jade | 2 +- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index f569134..e35d389 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -324,28 +324,31 @@ body.no-input #week-selector { body.no-input #search input:-ms-input-placeholder { color: #757575; } -} -.tooltip { - display: none; -} + body.no-input .tooltip { + display: block; + position: absolute; + background-color: white; + padding: 15px; + margin: 32px 8px; + border-radius: 2px; -body.no-input .tooltip { - display: block; - position: absolute; - background-color: white; - padding: 15px; - margin: 32px 8px; - border-radius: 2px; + left: 16px; + right: 16px; + } + + body.no-input .tooltip::before { + content: ''; + width: 24px; + height: 24px; + background-color: white; + top: -12px; + position: absolute; + transform: rotate(45deg); + z-index: -1; + } } -body.no-input .tooltip::before { - content: ''; - width: 24px; - height: 24px; - background-color: white; - top: -12px; - position: absolute; - transform: rotate(45deg); - z-index: -1; +.tooltip { + display: none; } \ No newline at end of file diff --git a/views/index.jade b/views/index.jade index 6d2aa17..dff671e 100644 --- a/views/index.jade +++ b/views/index.jade @@ -17,7 +17,7 @@ block content input(type='search', placeholder='Zoeken') button.material-icons.fav(tabindex='0', type='button')  .tooltip - span Voer hier een docenten afkorting, klas, leerlingen nummer of lokaal nummer in. + span Voer hier een docentafkorting, klas, leerlingnummer of lokaalnummer in. button#overflow-button(type='button') i.material-icons  -- cgit v1.1 From bbb106183b49350361e8e2c99ecc8476a4abeeb5 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 13:17:47 +0100 Subject: fix typo and change inherit to transparent (IE) --- public/stylesheets/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index e35d389..5c51bb4 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -74,7 +74,7 @@ input[type="search"]::-webkit-search-results-decoration { display: none; } -input[tupe="search"]::-ms-clear { +input[type="search"]::-ms-clear { width: 0; height: 0; } @@ -177,7 +177,7 @@ body.searched #search-space-filler { } #week-selector button { - background: inherit; + background: transparent; color: white; border: 0px; padding: 5px 10px; -- cgit v1.1 From d90745b23fb55a0736b56c045e12de4b1b05786f Mon Sep 17 00:00:00 2001 From: BuildTools Date: Wed, 7 Dec 2016 18:43:40 +0100 Subject: re-build bundle --- public/javascripts/bundle.js | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/public/javascripts/bundle.js b/public/javascripts/bundle.js index 04d3ec2..117733d 100644 --- a/public/javascripts/bundle.js +++ b/public/javascripts/bundle.js @@ -343,23 +343,23 @@ if (typeof exports !== 'undefined') { // Return all elements of `array` that have a fuzzy // match against `pattern`. fuzzy.simpleFilter = function(pattern, array) { - return array.filter(function(string) { - return fuzzy.test(pattern, string); + return array.filter(function(str) { + return fuzzy.test(pattern, str); }); }; -// Does `pattern` fuzzy match `string`? -fuzzy.test = function(pattern, string) { - return fuzzy.match(pattern, string) !== null; +// Does `pattern` fuzzy match `str`? +fuzzy.test = function(pattern, str) { + return fuzzy.match(pattern, str) !== null; }; -// If `pattern` matches `string`, wrap each matching character +// If `pattern` matches `str`, wrap each matching character // in `opts.pre` and `opts.post`. If no match, return null -fuzzy.match = function(pattern, string, opts) { +fuzzy.match = function(pattern, str, opts) { opts = opts || {}; var patternIdx = 0 , result = [] - , len = string.length + , len = str.length , totalScore = 0 , currScore = 0 // prefix @@ -368,15 +368,15 @@ fuzzy.match = function(pattern, string, opts) { , post = opts.post || '' // String to compare against. This might be a lowercase version of the // raw string - , compareString = opts.caseSensitive && string || string.toLowerCase() - , ch, compareChar; + , compareString = opts.caseSensitive && str || str.toLowerCase() + , ch; pattern = opts.caseSensitive && pattern || pattern.toLowerCase(); // For each character in the string, either add it to the result // or wrap in template if it's the next string in the pattern for(var idx = 0; idx < len; idx++) { - ch = string[idx]; + ch = str[idx]; if(compareString[idx] === pattern[patternIdx]) { ch = pre + ch + post; patternIdx += 1; @@ -392,6 +392,8 @@ fuzzy.match = function(pattern, string, opts) { // return rendered string if we have a match for every char if(patternIdx === pattern.length) { + // if the string is an exact match with pattern, totalScore should be maxed + totalScore = (compareString === pattern) ? Infinity : totalScore; return {rendered: result.join(''), score: totalScore}; } @@ -423,6 +425,12 @@ fuzzy.match = function(pattern, string, opts) { // , extract: function(arg) { return arg.crying; } // } fuzzy.filter = function(pattern, arr, opts) { + if(!arr || arr.length === 0) { + return []; + } + if (typeof pattern !== 'string') { + return arr; + } opts = opts || {}; return arr .reduce(function(prev, element, idx, arr) { @@ -457,6 +465,11 @@ fuzzy.filter = function(pattern, arr, opts) { },{}],4:[function(require,module,exports){ +/* This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://www.wtfpl.net/ for more details. */ 'use strict'; module.exports = leftPad; @@ -492,7 +505,7 @@ function leftPad (str, len, ch) { while (true) { // add `ch` to `pad` if `len` is odd if (len & 1) pad += ch; - // devide `len` by 2, ditch the fraction + // divide `len` by 2, ditch the remainder len >>= 1; // "double" the `ch` so this operation count grows logarithmically on `len` // each time `ch` is "doubled", the `len` would need to be "doubled" too @@ -864,4 +877,4 @@ document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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RCxNQTBCTyxJQUFJLFVBQVUsS0FBVixLQUFvQixFQUF4QixFQUE0QjtBQUNqQyxXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0EsWUFBVSxLQUFWO0FBQ0Q7O0FBRUQsSUFBSSxlQUFlLEdBQWYsS0FBdUIsRUFBM0IsRUFBK0I7QUFDN0IsV0FBUyxJQUFULENBQWMsU0FBZCxDQUF3QixHQUF4QixDQUE0QixVQUE1QjtBQUNEOztBQUVELFNBQVMsSUFBVCxDQUFjLEtBQWQsQ0FBb0IsT0FBcEIsR0FBOEIsR0FBOUI7O0FBRUEsT0FBTyxVQUFQLEdBQW9CLFVBQXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cmluZyk7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmluZ2A/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHJpbmcpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmluZ2AsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyaW5nLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyaW5nIHx8IHN0cmluZy50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaCwgY29tcGFyZUNoYXI7XG5cbiAgcGF0dGVybiA9IG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBwYXR0ZXJuIHx8IHBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblxuICAvLyBGb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgZWl0aGVyIGFkZCBpdCB0byB0aGUgcmVzdWx0XG4gIC8vIG9yIHdyYXAgaW4gdGVtcGxhdGUgaWYgaXQncyB0aGUgbmV4dCBzdHJpbmcgaW4gdGhlIHBhdHRlcm5cbiAgZm9yKHZhciBpZHggPSAwOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY2ggPSBzdHJpbmdbaWR4XTtcbiAgICBpZihjb21wYXJlU3RyaW5nW2lkeF0gPT09IHBhdHRlcm5bcGF0dGVybklkeF0pIHtcbiAgICAgIGNoID0gcHJlICsgY2ggKyBwb3N0O1xuICAgICAgcGF0dGVybklkeCArPSAxO1xuXG4gICAgICAvLyBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHNob3VsZCBpbmNyZWFzZSB0aGUgc2NvcmUgbW9yZSB0aGFuIGxpbmVhcmx5XG4gICAgICBjdXJyU2NvcmUgKz0gMSArIGN1cnJTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyclNjb3JlID0gMDtcbiAgICB9XG4gICAgdG90YWxTY29yZSArPSBjdXJyU2NvcmU7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gY2g7XG4gIH1cblxuICAvLyByZXR1cm4gcmVuZGVyZWQgc3RyaW5nIGlmIHdlIGhhdmUgYSBtYXRjaCBmb3IgZXZlcnkgY2hhclxuICBpZihwYXR0ZXJuSWR4ID09PSBwYXR0ZXJuLmxlbmd0aCkge1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICByZXR1cm4gYXJyXG4gICAgLnJlZHVjZShmdW5jdGlvbihwcmV2LCBlbGVtZW50LCBpZHgsIGFycikge1xuICAgICAgdmFyIHN0ciA9IGVsZW1lbnQ7XG4gICAgICBpZihvcHRzLmV4dHJhY3QpIHtcbiAgICAgICAgc3RyID0gb3B0cy5leHRyYWN0KGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdmFyIHJlbmRlcmVkID0gZnV6enkubWF0Y2gocGF0dGVybiwgc3RyLCBvcHRzKTtcbiAgICAgIGlmKHJlbmRlcmVkICE9IG51bGwpIHtcbiAgICAgICAgcHJldltwcmV2Lmxlbmd0aF0gPSB7XG4gICAgICAgICAgICBzdHJpbmc6IHJlbmRlcmVkLnJlbmRlcmVkXG4gICAgICAgICAgLCBzY29yZTogcmVuZGVyZWQuc2NvcmVcbiAgICAgICAgICAsIGluZGV4OiBpZHhcbiAgICAgICAgICAsIG9yaWdpbmFsOiBlbGVtZW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSlcblxuICAgIC8vIFNvcnQgYnkgc2NvcmUuIEJyb3dzZXJzIGFyZSBpbmNvbnNpc3RlbnQgd3J0IHN0YWJsZS91bnN0YWJsZVxuICAgIC8vIHNvcnRpbmcsIHNvIGZvcmNlIHN0YWJsZSBieSB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGNhc2Ugb2YgdGllLlxuICAgIC8vIFNlZSBodHRwOi8vb2ZiLm5ldC9+c2V0aG1sL2lzLXNvcnQtc3RhYmxlLmh0bWxcbiAgICAuc29ydChmdW5jdGlvbihhLGIpIHtcbiAgICAgIHZhciBjb21wYXJlID0gYi5zY29yZSAtIGEuc2NvcmU7XG4gICAgICBpZihjb21wYXJlKSByZXR1cm4gY29tcGFyZTtcbiAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICB9KTtcbn07XG5cblxufSgpKTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRldmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgZnJhY3Rpb25cbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbmxldCBpbnB1dEV2ZW50U3RyXG5pZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgIT09IC0xIHx8XG4gICAgbmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignVHJpZGVudC8nKSA+IDApIHtcbiAgaW5wdXRFdmVudFN0ciA9ICd0ZXh0aW5wdXQnIC8vIElFIDYtMTFcbn0gZWxzZSB7XG4gIGlucHV0RXZlbnRTdHIgPSAnaW5wdXQnIC8vIG5vcm1hbCBicm93c2Vyc1xufVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoaW5wdXRFdmVudFN0ciwgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduby1pbnB1dCcpXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgZHJhd2luZyBmb2N1cyBvbiBpdCAoc2FmYXJpKVxuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCBzZWxlY3Rpb24gZXZlbiB3aGVuIGZvY3VzaW5nIGFuIGlmcmFtZSAoY2hyb21lKVxuICBjb25zdCBvbGRWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUudmFsdWUgPSBvbGRWYWx1ZVxuXG4gIC8vIHRoaXMgd2lsbCBoaWRlIHRoZSBrZXlib2FyZCAoaU9TIHNhZmFyaSlcbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKClcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCduby1pbnB1dCcpXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmlmIChzY2hlZHVsZUlmcmFtZS5zcmMgIT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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ZSxZQUFuQyxFQUFpRCx3QkFBakQsRUFBOEQsc0JBQTlELEVBQVg7QUFDRCxLQUZEO0FBdkJjO0FBMEJmLENBMUJELE1BMEJPLElBQUksVUFBVSxLQUFWLEtBQW9CLEVBQXhCLEVBQTRCO0FBQ2pDLFdBQVMsSUFBVCxDQUFjLFNBQWQsQ0FBd0IsR0FBeEIsQ0FBNEIsVUFBNUI7QUFDQSxZQUFVLEtBQVY7QUFDRDs7QUFFRCxJQUFJLGVBQWUsR0FBZixLQUF1QixFQUEzQixFQUErQjtBQUM3QixXQUFTLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLFVBQTVCO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULENBQWMsS0FBZCxDQUFvQixPQUFwQixHQUE4QixHQUE5Qjs7QUFFQSxPQUFPLFVBQVAsR0FBb0IsVUFBcEIiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiZXhwb3J0cy5yZW1vdmUgPSByZW1vdmVEaWFjcml0aWNzO1xuXG52YXIgcmVwbGFjZW1lbnRMaXN0ID0gW1xuICB7XG4gICAgYmFzZTogJyAnLFxuICAgIGNoYXJzOiBcIlxcdTAwQTBcIixcbiAgfSwge1xuICAgIGJhc2U6ICcwJyxcbiAgICBjaGFyczogXCJcXHUwN0MwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQScsXG4gICAgY2hhcnM6IFwiXFx1MjRCNlxcdUZGMjFcXHUwMEMwXFx1MDBDMVxcdTAwQzJcXHUxRUE2XFx1MUVBNFxcdTFFQUFcXHUxRUE4XFx1MDBDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx1MDBDNFxcdTAxREVcXHUxRUEyXFx1MDBDNVxcdTAxRkFcXHUwMUNEXFx1MDIwMFxcdTAyMDJcXHUxRUEwXFx1MUVBQ1xcdTFFQjZcXHUxRTAwXFx1MDEwNFxcdTAyM0FcXHUyQzZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBRScsXG4gICAgY2hhcnM6IFwiXFx1MDBDNlxcdTAxRkNcXHUwMUUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQU8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVScsXG4gICAgY2hhcnM6IFwiXFx1QTczNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FWJyxcbiAgICBjaGFyczogXCJcXHVBNzM4XFx1QTczQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FZJyxcbiAgICBjaGFyczogXCJcXHVBNzNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQicsXG4gICAgY2hhcnM6IFwiXFx1MjRCN1xcdUZGMjJcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUwMjQzXFx1MDE4MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0MnLFxuICAgIGNoYXJzOiBcIlxcdTI0YjhcXHVmZjIzXFx1QTczRVxcdTFFMDhcXHUwMTA2XFx1MDA0M1xcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAwQzdcXHUwMTg3XFx1MDIzQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjlcXHVGRjI0XFx1MUUwQVxcdTAxMEVcXHUxRTBDXFx1MUUxMFxcdTFFMTJcXHUxRTBFXFx1MDExMFxcdTAxOEFcXHUwMTg5XFx1MUQwNVxcdUE3NzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBEMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0RaJyxcbiAgICBjaGFyczogXCJcXHUwMUYxXFx1MDFDNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYyXFx1MDFDNVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0UnLFxuICAgIGNoYXJzOiBcIlxcdTAyNUJcXHUyNEJBXFx1RkYyNVxcdTAwQzhcXHUwMEM5XFx1MDBDQVxcdTFFQzBcXHUxRUJFXFx1MUVDNFxcdTFFQzJcXHUxRUJDXFx1MDExMlxcdTFFMTRcXHUxRTE2XFx1MDExNFxcdTAxMTZcXHUwMENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVxcdTFEMDdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdGJyxcbiAgICBjaGFyczogXCJcXHVBNzdDXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdHJyxcbiAgICBjaGFyczogXCJcXHUyNEJDXFx1RkYyN1xcdTAxRjRcXHUwMTFDXFx1MUUyMFxcdTAxMUVcXHUwMTIwXFx1MDFFNlxcdTAxMjJcXHUwMUU0XFx1MDE5M1xcdUE3QTBcXHVBNzdEXFx1QTc3RVxcdTAyNjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdIJyxcbiAgICBjaGFyczogXCJcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSScsXG4gICAgY2hhcnM6IFwiXFx1MjRCRVxcdUZGMjlcXHhDQ1xceENEXFx4Q0VcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTMwXFx4Q0ZcXHUxRTJFXFx1MUVDOFxcdTAxQ0ZcXHUwMjA4XFx1MDIwQVxcdTFFQ0FcXHUwMTJFXFx1MUUyQ1xcdTAxOTdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdKJyxcbiAgICBjaGFyczogXCJcXHUyNEJGXFx1RkYyQVxcdTAxMzRcXHUwMjQ4XFx1MDIzN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0snLFxuICAgIGNoYXJzOiBcIlxcdTI0QzBcXHVGRjJCXFx1MUUzMFxcdTAxRThcXHUxRTMyXFx1MDEzNlxcdTFFMzRcXHUwMTk4XFx1MkM2OVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3QTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMJyxcbiAgICBjaGFyczogXCJcXHUyNEMxXFx1RkYyQ1xcdTAxM0ZcXHUwMTM5XFx1MDEzRFxcdTFFMzZcXHUxRTM4XFx1MDEzQlxcdTFFM0NcXHUxRTNBXFx1MDE0MVxcdTAyM0RcXHUyQzYyXFx1MkM2MFxcdUE3NDhcXHVBNzQ2XFx1QTc4MFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xKJyxcbiAgICBjaGFyczogXCJcXHUwMUM3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdNJyxcbiAgICBjaGFyczogXCJcXHUyNEMyXFx1RkYyRFxcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTJDNkVcXHUwMTlDXFx1MDNGQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ04nLFxuICAgIGNoYXJzOiBcIlxcdUE3QTRcXHUwMjIwXFx1MjRDM1xcdUZGMkVcXHUwMUY4XFx1MDE0M1xceEQxXFx1MUU0NFxcdTAxNDdcXHUxRTQ2XFx1MDE0NVxcdTFFNEFcXHUxRTQ4XFx1MDE5RFxcdUE3OTBcXHUxRDBFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTkonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ08nLFxuICAgIGNoYXJzOiBcIlxcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ09FJyxcbiAgICBjaGFyczogXCJcXHUwMTUyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT0knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPTycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09VJyxcbiAgICBjaGFyczogXCJcXHUwMjIyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUScsXG4gICAgY2hhcnM6IFwiXFx1MjRDNlxcdUZGMzFcXHVBNzU2XFx1QTc1OFxcdTAyNEFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdSJyxcbiAgICBjaGFyczogXCJcXHUyNEM3XFx1RkYzMlxcdTAxNTRcXHUxRTU4XFx1MDE1OFxcdTAyMTBcXHUwMjEyXFx1MUU1QVxcdTFFNUNcXHUwMTU2XFx1MUU1RVxcdTAyNENcXHUyQzY0XFx1QTc1QVxcdUE3QTZcXHVBNzgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUycsXG4gICAgY2hhcnM6IFwiXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1QnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzlcXHVGRjM0XFx1MUU2QVxcdTAxNjRcXHUxRTZDXFx1MDIxQVxcdTAxNjJcXHUxRTcwXFx1MUU2RVxcdTAxNjZcXHUwMUFDXFx1MDFBRVxcdTAyM0VcXHVBNzg2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwREVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUWicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1UnLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdWJyxcbiAgICBjaGFyczogXCJcXHUyNENCXFx1RkYzNlxcdTFFN0NcXHUxRTdFXFx1MDFCMlxcdUE3NUVcXHUwMjQ1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVlknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdXJyxcbiAgICBjaGFyczogXCJcXHUyNENDXFx1RkYzN1xcdTFFODBcXHUxRTgyXFx1MDE3NFxcdTFFODZcXHUxRTg0XFx1MUU4OFxcdTJDNzJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdYJyxcbiAgICBjaGFyczogXCJcXHUyNENEXFx1RkYzOFxcdTFFOEFcXHUxRThDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWScsXG4gICAgY2hhcnM6IFwiXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWicsXG4gICAgY2hhcnM6IFwiXFx1MjRDRlxcdUZGM0FcXHUwMTc5XFx1MUU5MFxcdTAxN0JcXHUwMTdEXFx1MUU5MlxcdTFFOTRcXHUwMUI1XFx1MDIyNFxcdTJDN0ZcXHUyQzZCXFx1QTc2MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDBcXHVGRjQxXFx1MUU5QVxcdTAwRTBcXHUwMEUxXFx1MDBFMlxcdTFFQTdcXHUxRUE1XFx1MUVBQlxcdTFFQTlcXHUwMEUzXFx1MDEwMVxcdTAxMDNcXHUxRUIxXFx1MUVBRlxcdTFFQjVcXHUxRUIzXFx1MDIyN1xcdTAxRTFcXHUwMEU0XFx1MDFERlxcdTFFQTNcXHUwMEU1XFx1MDFGQlxcdTAxQ0VcXHUwMjAxXFx1MDIwM1xcdTFFQTFcXHUxRUFEXFx1MUVCN1xcdTFFMDFcXHUwMTA1XFx1MkM2NVxcdTAyNTBcXHUwMjUxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWEnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhZScsXG4gICAgY2hhcnM6IFwiXFx1MDBFNlxcdTAxRkRcXHUwMUUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYW8nLFxuICAgIGNoYXJzOiBcIlxcdUE3MzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdScsXG4gICAgY2hhcnM6IFwiXFx1QTczN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F2JyxcbiAgICBjaGFyczogXCJcXHVBNzM5XFx1QTczQlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2F5JyxcbiAgICBjaGFyczogXCJcXHVBNzNEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYicsXG4gICAgY2hhcnM6IFwiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcXHUwMTgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYycsXG4gICAgY2hhcnM6IFwiXFx1RkY0M1xcdTI0RDJcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDBFN1xcdTFFMDlcXHUwMTg4XFx1MDIzQ1xcdUE3M0ZcXHUyMTg0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZCcsXG4gICAgY2hhcnM6IFwiXFx1MjREM1xcdUZGNDRcXHUxRTBCXFx1MDEwRlxcdTFFMERcXHUxRTExXFx1MUUxM1xcdTFFMEZcXHUwMTExXFx1MDE4Q1xcdTAyNTZcXHUwMjU3XFx1MDE4QlxcdTEzRTdcXHUwNTAxXFx1QTdBQVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2RoJyxcbiAgICBjaGFyczogXCJcXHUwMEYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZHonLFxuICAgIGNoYXJzOiBcIlxcdTAxRjNcXHUwMUM2XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZScsXG4gICAgY2hhcnM6IFwiXFx1MjRENFxcdUZGNDVcXHUwMEU4XFx1MDBFOVxcdTAwRUFcXHUxRUMxXFx1MUVCRlxcdTFFQzVcXHUxRUMzXFx1MUVCRFxcdTAxMTNcXHUxRTE1XFx1MUUxN1xcdTAxMTVcXHUwMTE3XFx1MDBFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAxRERcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmJyxcbiAgICBjaGFyczogXCJcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmYnLFxuICAgIGNoYXJzOiBcIlxcdUZCMDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZsJyxcbiAgICBjaGFyczogXCJcXHVGQjAyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZpJyxcbiAgICBjaGFyczogXCJcXHVGQjAzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmZsJyxcbiAgICBjaGFyczogXCJcXHVGQjA0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZycsXG4gICAgY2hhcnM6IFwiXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1QTc3RlxcdTFENzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdoJyxcbiAgICBjaGFyczogXCJcXHUyNEQ3XFx1RkY0OFxcdTAxMjVcXHUxRTIzXFx1MUUyN1xcdTAyMUZcXHUxRTI1XFx1MUUyOVxcdTFFMkJcXHUxRTk2XFx1MDEyN1xcdTJDNjhcXHUyQzc2XFx1MDI2NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2h2JyxcbiAgICBjaGFyczogXCJcXHUwMTk1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaScsXG4gICAgY2hhcnM6IFwiXFx1MjREOFxcdUZGNDlcXHhFQ1xceEVEXFx4RUVcXHUwMTI5XFx1MDEyQlxcdTAxMkRcXHhFRlxcdTFFMkZcXHUxRUM5XFx1MDFEMFxcdTAyMDlcXHUwMjBCXFx1MUVDQlxcdTAxMkZcXHUxRTJEXFx1MDI2OFxcdTAxMzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdqJyxcbiAgICBjaGFyczogXCJcXHUyNEQ5XFx1RkY0QVxcdTAxMzVcXHUwMUYwXFx1MDI0OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2snLFxuICAgIGNoYXJzOiBcIlxcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdsJyxcbiAgICBjaGFyczogXCJcXHUyNERCXFx1RkY0Q1xcdTAxNDBcXHUwMTNBXFx1MDEzRVxcdTFFMzdcXHUxRTM5XFx1MDEzQ1xcdTFFM0RcXHUxRTNCXFx1MDE3RlxcdTAxNDJcXHUwMTlBXFx1MDI2QlxcdTJDNjFcXHVBNzQ5XFx1QTc4MVxcdUE3NDdcXHUwMjZEXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbGonLFxuICAgIGNoYXJzOiBcIlxcdTAxQzlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdtJyxcbiAgICBjaGFyczogXCJcXHUyNERDXFx1RkY0RFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTAyNzFcXHUwMjZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbicsXG4gICAgY2hhcnM6IFwiXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcXHUwNDNCXFx1MDUwOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ25qJyxcbiAgICBjaGFyczogXCJcXHUwMUNDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbycsXG4gICAgY2hhcnM6IFwiXFx1MjRERVxcdUZGNEZcXHhGMlxceEYzXFx4RjRcXHUxRUQzXFx1MUVEMVxcdTFFRDdcXHUxRUQ1XFx4RjVcXHUxRTREXFx1MDIyRFxcdTFFNEZcXHUwMTREXFx1MUU1MVxcdTFFNTNcXHUwMTRGXFx1MDIyRlxcdTAyMzFcXHhGNlxcdTAyMkJcXHUxRUNGXFx1MDE1MVxcdTAxRDJcXHUwMjBEXFx1MDIwRlxcdTAxQTFcXHUxRUREXFx1MUVEQlxcdTFFRTFcXHUxRURGXFx1MUVFM1xcdTFFQ0RcXHUxRUQ5XFx1MDFFQlxcdTAxRURcXHhGOFxcdTAxRkZcXHVBNzRCXFx1QTc0RFxcdTAyNzVcXHUwMjU0XFx1MUQxMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ29lJyxcbiAgICBjaGFyczogXCJcXHUwMTUzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb2knLFxuICAgIGNoYXJzOiBcIlxcdTAxQTNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvbycsXG4gICAgY2hhcnM6IFwiXFx1QTc0RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ291JyxcbiAgICBjaGFyczogXCJcXHUwMjIzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncCcsXG4gICAgY2hhcnM6IFwiXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1MDNDMVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3EnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTBcXHVGRjUxXFx1MDI0QlxcdUE3NTdcXHVBNzU5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAncicsXG4gICAgY2hhcnM6IFwiXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3MnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTJcXHVGRjUzXFx1MDE1QlxcdTFFNjVcXHUwMTVEXFx1MUU2MVxcdTAxNjFcXHUxRTY3XFx1MUU2M1xcdTFFNjlcXHUwMjE5XFx1MDE1RlxcdTAyM0ZcXHVBN0E5XFx1QTc4NVxcdTFFOUJcXHUwMjgyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnc3MnLFxuICAgIGNoYXJzOiBcIlxceERGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFM1xcdUZGNTRcXHUxRTZCXFx1MUU5N1xcdTAxNjVcXHUxRTZEXFx1MDIxQlxcdTAxNjNcXHUxRTcxXFx1MUU2RlxcdTAxNjdcXHUwMUFEXFx1MDI4OFxcdTJDNjZcXHVBNzg3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRkVcIixcbiAgfSwge1xuICAgIGJhc2U6ICd0eicsXG4gICAgY2hhcnM6IFwiXFx1QTcyOVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd2JyxcbiAgICBjaGFyczogXCJcXHUyNEU1XFx1RkY1NlxcdTFFN0RcXHUxRTdGXFx1MDI4QlxcdUE3NUZcXHUwMjhDXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndnknLFxuICAgIGNoYXJzOiBcIlxcdUE3NjFcIixcbiAgfSwge1xuICAgIGJhc2U6ICd3JyxcbiAgICBjaGFyczogXCJcXHUyNEU2XFx1RkY1N1xcdTFFODFcXHUxRTgzXFx1MDE3NVxcdTFFODdcXHUxRTg1XFx1MUU5OFxcdTFFODlcXHUyQzczXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneCcsXG4gICAgY2hhcnM6IFwiXFx1MjRFN1xcdUZGNThcXHUxRThCXFx1MUU4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3knLFxuICAgIGNoYXJzOiBcIlxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAneicsXG4gICAgY2hhcnM6IFwiXFx1MjRFOVxcdUZGNUFcXHUwMTdBXFx1MUU5MVxcdTAxN0NcXHUwMTdFXFx1MUU5M1xcdTFFOTVcXHUwMUI2XFx1MDIyNVxcdTAyNDBcXHUyQzZDXFx1QTc2M1wiLFxuICB9XG5dO1xuXG52YXIgZGlhY3JpdGljc01hcCA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCByZXBsYWNlbWVudExpc3QubGVuZ3RoOyBpICs9IDEpIHtcbiAgdmFyIGNoYXJzID0gcmVwbGFjZW1lbnRMaXN0W2ldLmNoYXJzO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYXJzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgZGlhY3JpdGljc01hcFtjaGFyc1tqXV0gPSByZXBsYWNlbWVudExpc3RbaV0uYmFzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdlXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgcmV0dXJuIGRpYWNyaXRpY3NNYXBbY10gfHwgYztcbiAgfSk7XG59XG4iLCIhZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxlKTtlbHNle3ZhciB0O3Q9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLHQuZmxleGliaWxpdHk9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbCl7ZnVuY3Rpb24gbihmLGkpe2lmKCFyW2ZdKXtpZighdFtmXSl7dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighaSYmcylyZXR1cm4gcyhmLCEwKTtpZihvKXJldHVybiBvKGYsITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZitcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIGM9cltmXT17ZXhwb3J0czp7fX07dFtmXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgcj10W2ZdWzFdW2VdO3JldHVybiBuKHI/cjplKX0sYyxjLmV4cG9ydHMsZSx0LHIsbCl9cmV0dXJuIHJbZl0uZXhwb3J0c31mb3IodmFyIG89XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxsLmxlbmd0aDtmKyspbihsW2ZdKTtyZXR1cm4gbn0oezE6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQscixsLG49LTE7aWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LXN0YXJ0XCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD0wO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJmbGV4LWVuZFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiY2VudGVyXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3IodD1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcInNwYWNlLWJldHdlZW5cIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKGUubGluZXMubGVuZ3RoLTEpLHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcytyO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1hcm91bmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcihyPTIqZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8oMiplLmxpbmVzLmxlbmd0aCksdD1yLzI7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGZvcihyPWUuZmxleFN0eWxlLmNyb3NzU3BhY2UvZS5saW5lcy5sZW5ndGgsdD1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCxsLmNyb3NzKz1yLHQrPWwuY3Jvc3N9fSx7fV0sMjpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQscj0tMTtsaW5lPWUubGluZXNbKytyXTspZm9yKHQ9LTE7Y2hpbGQ9bGluZS5jaGlsZHJlblsrK3RdOyl7dmFyIGw9Y2hpbGQuc3R5bGUuYWxpZ25TZWxmO1wiYXV0b1wiPT09bCYmKGw9ZS5zdHlsZS5hbGlnbkl0ZW1zKSxcImZsZXgtc3RhcnRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0OlwiZmxleC1lbmRcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0K2xpbmUuY3Jvc3MtY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI6XCJjZW50ZXJcIj09PWw/Y2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0KyhsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyKS8yOihjaGlsZC5mbGV4U3R5bGUuY3Jvc3NTdGFydD1saW5lLmNyb3NzU3RhcnQsY2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9bGluZS5jcm9zcyxjaGlsZC5mbGV4U3R5bGUuY3Jvc3M9Y2hpbGQuZmxleFN0eWxlLmNyb3NzT3V0ZXItY2hpbGQuZmxleFN0eWxlLmNyb3NzQmVmb3JlLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0FmdGVyKX19fSx7fV0sMzpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbiBsKGUsbCl7dmFyIHQ9XCJyb3dcIj09PWx8fFwicm93LXJldmVyc2VcIj09PWwscj1lLm1haW5BeGlzO2lmKHIpe3ZhciBuPXQmJlwiaW5saW5lXCI9PT1yfHwhdCYmXCJibG9ja1wiPT09cjtufHwoZS5mbGV4U3R5bGU9e21haW46ZS5mbGV4U3R5bGUuY3Jvc3MsY3Jvc3M6ZS5mbGV4U3R5bGUubWFpbixtYWluT2Zmc2V0OmUuZmxleFN0eWxlLmNyb3NzT2Zmc2V0LGNyb3NzT2Zmc2V0OmUuZmxleFN0eWxlLm1haW5PZmZzZXQsbWFpbkJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSxtYWluQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcixjcm9zc0JlZm9yZTplLmZsZXhTdHlsZS5tYWluQmVmb3JlLGNyb3NzQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkFmdGVyLG1haW5Jbm5lckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLG1haW5Jbm5lckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcixjcm9zc0lubmVyQmVmb3JlOmUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZSxjcm9zc0lubmVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIsbWFpbkJvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZSxtYWluQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcixjcm9zc0JvcmRlckJlZm9yZTplLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyfSl9ZWxzZSB0P2UuZmxleFN0eWxlPXttYWluOmUuc3R5bGUud2lkdGgsY3Jvc3M6ZS5zdHlsZS5oZWlnaHQsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLGNyb3NzT2Zmc2V0OmUuc3R5bGUub2Zmc2V0SGVpZ2h0LG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5MZWZ0LG1haW5BZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLGNyb3NzQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5Cb3R0b20sbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ0xlZnQsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsY3Jvc3NJbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ0JvdHRvbSxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJUb3BXaWR0aCxjcm9zc0JvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGh9OmUuZmxleFN0eWxlPXttYWluOmUuc3R5bGUuaGVpZ2h0LGNyb3NzOmUuc3R5bGUud2lkdGgsbWFpbk9mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldFdpZHRoLG1haW5CZWZvcmU6ZS5zdHlsZS5tYXJnaW5Ub3AsbWFpbkFmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLGNyb3NzQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luUmlnaHQsbWFpbklubmVyQmVmb3JlOmUuc3R5bGUucGFkZGluZ1RvcCxtYWluSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sY3Jvc3NJbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdSaWdodCxtYWluQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsbWFpbkJvcmRlckFmdGVyOmUuc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5zdHlsZS5ib3JkZXJMZWZ0V2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGh9LFwiY29udGVudC1ib3hcIj09PWUuc3R5bGUuYm94U2l6aW5nJiYoXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluKz1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zcyYmKGUuZmxleFN0eWxlLmNyb3NzKz1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSk7ZS5tYWluQXhpcz10P1wiaW5saW5lXCI6XCJibG9ja1wiLGUuY3Jvc3NBeGlzPXQ/XCJibG9ja1wiOlwiaW5saW5lXCIsXCJudW1iZXJcIj09dHlwZW9mIGUuc3R5bGUuZmxleEJhc2lzJiYoZS5mbGV4U3R5bGUubWFpbj1lLnN0eWxlLmZsZXhCYXNpcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpLGUuZmxleFN0eWxlLm1haW5PdXRlcj1lLmZsZXhTdHlsZS5tYWluLGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3MsXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluT3V0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbk9mZnNldCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5jcm9zc091dGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zc09mZnNldCksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLm1haW5CZWZvcmUmJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5CZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQWZ0ZXImJihlLmZsZXhTdHlsZS5tYWluT3V0ZXIrPWUuZmxleFN0eWxlLm1haW5BZnRlciksXCJudW1iZXJcIj09dHlwZW9mIGUuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYoZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcis9ZS5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPjApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4R3Jvdyl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm5cImF1dG9cIj09PWwuZmxleFN0eWxlLm1haW4/bC5mbGV4U3R5bGUubWFpbj1sLmZsZXhTdHlsZS5tYWluT2Zmc2V0K3BhcnNlRmxvYXQobC5zdHlsZS5mbGV4R3JvdykvdCplLm1haW5TcGFjZTpsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUubWFpblNwYWNlPDApe3ZhciB0PWwoZS5jaGlsZHJlbixmdW5jdGlvbihlLHQpe3JldHVybiBlK3BhcnNlRmxvYXQodC5zdHlsZS5mbGV4U2hyaW5rKX0sMCk7dD4wJiYoZS5tYWluPWwoZS5jaGlsZHJlbixmdW5jdGlvbihyLGwpe3JldHVybiBsLmZsZXhTdHlsZS5tYWluKz1wYXJzZUZsb2F0KGwuc3R5bGUuZmxleFNocmluaykvdCplLm1haW5TcGFjZSxsLmZsZXhTdHlsZS5tYWluT3V0ZXI9bC5mbGV4U3R5bGUubWFpbitsLmZsZXhTdHlsZS5tYWluQmVmb3JlK2wuZmxleFN0eWxlLm1haW5BZnRlcixyK2wuZmxleFN0eWxlLm1haW5PdXRlcn0sMCksZS5tYWluU3BhY2U9MCl9fX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw2OltmdW5jdGlvbihlLHQscil7dmFyIGw9ZShcIi4uL3JlZHVjZVwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5saW5lcz1bdD17bWFpbjowLGNyb3NzOjAsY2hpbGRyZW46W119XTtmb3IodmFyIHIsbj0tMTtyPWUuY2hpbGRyZW5bKytuXTspXCJub3dyYXBcIj09PWUuc3R5bGUuZmxleFdyYXB8fDA9PT10LmNoaWxkcmVuLmxlbmd0aHx8XCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWlufHxlLmZsZXhTdHlsZS5tYWluLWUuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcj49dC5tYWluK3IuZmxleFN0eWxlLm1haW5PdXRlcj8odC5tYWluKz1yLmZsZXhTdHlsZS5tYWluT3V0ZXIsdC5jcm9zcz1NYXRoLm1heCh0LmNyb3NzLHIuZmxleFN0eWxlLmNyb3NzT3V0ZXIpKTplLmxpbmVzLnB1c2godD17bWFpbjpyLmZsZXhTdHlsZS5tYWluT3V0ZXIsY3Jvc3M6ci5mbGV4U3R5bGUuY3Jvc3NPdXRlcixjaGlsZHJlbjpbXX0pLHQuY2hpbGRyZW4ucHVzaChyKTtlLmZsZXhTdHlsZS5tYWluTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KGUsdC5tYWluKX0sMCksZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcz1sKGUubGluZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0LmNyb3NzfSwwKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLm1haW4mJihlLmZsZXhTdHlsZS5tYWluPU1hdGgubWF4KGUuZmxleFN0eWxlLm1haW5PZmZzZXQsZS5mbGV4U3R5bGUubWFpbkxpbmVzK2UuZmxleFN0eWxlLm1haW5Jbm5lckJlZm9yZStlLmZsZXhTdHlsZS5tYWluSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5tYWluQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcikpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcz1NYXRoLm1heChlLmZsZXhTdHlsZS5jcm9zc09mZnNldCxlLmZsZXhTdHlsZS5jcm9zc0xpbmVzK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIpKSxlLmZsZXhTdHlsZS5jcm9zc1NwYWNlPWUuZmxleFN0eWxlLmNyb3NzLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXItZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcyxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbitlLmZsZXhTdHlsZS5tYWluQmVmb3JlK2UuZmxleFN0eWxlLm1haW5BZnRlcixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzK2UuZmxleFN0eWxlLmNyb3NzQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKHQpe2Zvcih2YXIgcixsPS0xO3I9dC5jaGlsZHJlblsrK2xdOyllKFwiLi9mbGV4LWRpcmVjdGlvblwiKShyLHQuc3R5bGUuZmxleERpcmVjdGlvbik7ZShcIi4vZmxleC1kaXJlY3Rpb25cIikodCx0LnN0eWxlLmZsZXhEaXJlY3Rpb24pLGUoXCIuL29yZGVyXCIpKHQpLGUoXCIuL2ZsZXhib3gtbGluZXNcIikodCksZShcIi4vYWxpZ24tY29udGVudFwiKSh0KSxsPS0xO2Zvcih2YXIgbjtuPXQubGluZXNbKytsXTspbi5tYWluU3BhY2U9dC5mbGV4U3R5bGUubWFpbi10LmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItdC5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS10LmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXItbi5tYWluLGUoXCIuL2ZsZXgtZ3Jvd1wiKShuKSxlKFwiLi9mbGV4LXNocmlua1wiKShuKSxlKFwiLi9tYXJnaW4tbWFpblwiKShuKSxlKFwiLi9tYXJnaW4tY3Jvc3NcIikobiksZShcIi4vanVzdGlmeS1jb250ZW50XCIpKG4sdC5zdHlsZS5qdXN0aWZ5Q29udGVudCx0KTtlKFwiLi9hbGlnbi1pdGVtc1wiKSh0KX10LmV4cG9ydHM9bH0se1wiLi9hbGlnbi1jb250ZW50XCI6MSxcIi4vYWxpZ24taXRlbXNcIjoyLFwiLi9mbGV4LWRpcmVjdGlvblwiOjMsXCIuL2ZsZXgtZ3Jvd1wiOjQsXCIuL2ZsZXgtc2hyaW5rXCI6NSxcIi4vZmxleGJveC1saW5lc1wiOjYsXCIuL2p1c3RpZnktY29udGVudFwiOjgsXCIuL21hcmdpbi1jcm9zc1wiOjksXCIuL21hcmdpbi1tYWluXCI6MTAsXCIuL29yZGVyXCI6MTF9XSw4OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbCxuLG8sZj1yLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsaT0tMTtpZihcImZsZXgtZW5kXCI9PT10KWZvcihsPWUubWFpblNwYWNlLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwiY2VudGVyXCI9PT10KWZvcihsPWUubWFpblNwYWNlLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyO2Vsc2UgaWYoXCJzcGFjZS1iZXR3ZWVuXCI9PT10KWZvcihuPWUubWFpblNwYWNlLyhlLmNoaWxkcmVuLmxlbmd0aC0xKSxsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBpZihcInNwYWNlLWFyb3VuZFwiPT09dClmb3Iobj0yKmUubWFpblNwYWNlLygyKmUuY2hpbGRyZW4ubGVuZ3RoKSxsPW4vMixsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXIrbjtlbHNlIGZvcihsPTAsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyfX0se31dLDk6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7dD1lLmNoaWxkcmVuWysrcl07KXt2YXIgbD0wO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJisrbCxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQWZ0ZXImJisrbDt2YXIgbj1lLmNyb3NzLXQuZmxleFN0eWxlLmNyb3NzT3V0ZXI7XCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKHQuZmxleFN0eWxlLmNyb3NzQmVmb3JlPW4vbCksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYodC5mbGV4U3R5bGUuY3Jvc3NBZnRlcj1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3M/dC5mbGV4U3R5bGUuY3Jvc3NPdXRlcj10LmZsZXhTdHlsZS5jcm9zc09mZnNldCt0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZSt0LmZsZXhTdHlsZS5jcm9zc0FmdGVyOnQuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3MrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcn19fSx7fV0sMTA6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MCxsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJisrcixcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5BZnRlciYmKytyO2lmKHI+MCl7Zm9yKGw9LTE7dD1lLmNoaWxkcmVuWysrbF07KVwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkJlZm9yZSYmKHQuZmxleFN0eWxlLm1haW5CZWZvcmU9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJih0LmZsZXhTdHlsZS5tYWluQWZ0ZXI9ZS5tYWluU3BhY2UvciksXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluP3QuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluT2Zmc2V0K3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyOnQuZmxleFN0eWxlLm1haW5PdXRlcj10LmZsZXhTdHlsZS5tYWluK3QuZmxleFN0eWxlLm1haW5CZWZvcmUrdC5mbGV4U3R5bGUubWFpbkFmdGVyO2UubWFpblNwYWNlPTB9fX0se31dLDExOltmdW5jdGlvbihlLHQscil7dmFyIGw9L14oY29sdW1ufHJvdyktcmV2ZXJzZSQvO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtlLmNoaWxkcmVuLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZS5vcmRlci10LnN0eWxlLm9yZGVyfHxlLmluZGV4LXQuaW5kZXh9KSxsLnRlc3QoZS5zdHlsZS5mbGV4RGlyZWN0aW9uKSYmZS5jaGlsZHJlbi5yZXZlcnNlKCl9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXtmb3IodmFyIGw9ZS5sZW5ndGgsbj0tMTsrK248bDspbiBpbiBlJiYocj10KHIsZVtuXSxuKSk7cmV0dXJuIHJ9dC5leHBvcnRzPWx9LHt9XSwxMzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7aShmKGUpKX12YXIgbj1lKFwiLi9yZWFkXCIpLG89ZShcIi4vd3JpdGVcIiksZj1lKFwiLi9yZWFkQWxsXCIpLGk9ZShcIi4vd3JpdGVBbGxcIik7dC5leHBvcnRzPWwsdC5leHBvcnRzLnJlYWQ9bix0LmV4cG9ydHMud3JpdGU9byx0LmV4cG9ydHMucmVhZEFsbD1mLHQuZXhwb3J0cy53cml0ZUFsbD1pfSx7XCIuL3JlYWRcIjoxNSxcIi4vcmVhZEFsbFwiOjE2LFwiLi93cml0ZVwiOjE3LFwiLi93cml0ZUFsbFwiOjE4fV0sMTQ6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUsdCxyKXt2YXIgbD1lW3RdLGY9U3RyaW5nKGwpLm1hdGNoKG8pO2lmKCFmKXt2YXIgYT10Lm1hdGNoKHMpO2lmKGEpe3ZhciBjPWVbXCJib3JkZXJcIithWzFdK1wiU3R5bGVcIl07cmV0dXJuXCJub25lXCI9PT1jPzA6aVtsXXx8MH1yZXR1cm4gbH12YXIgeT1mWzFdLHg9ZlsyXTtyZXR1cm5cInB4XCI9PT14PzEqeTpcImNtXCI9PT14Py4zOTM3KnkqOTY6XCJpblwiPT09eD85Nip5OlwibW1cIj09PXg/LjM5MzcqeSo5Ni8xMDpcInBjXCI9PT14PzEyKnkqOTYvNzI6XCJwdFwiPT09eD85Nip5LzcyOlwicmVtXCI9PT14PzE2Knk6bihsLHIpfWZ1bmN0aW9uIG4oZSx0KXtmLnN0eWxlLmNzc1RleHQ9XCJib3JkZXI6bm9uZSFpbXBvcnRhbnQ7Y2xpcDpyZWN0KDAgMCAwIDApIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtmb250LXNpemU6MWVtIWltcG9ydGFudDtoZWlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3dpZHRoOlwiK2UrXCIhaW1wb3J0YW50XCIsdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLHQubmV4dFNpYmxpbmcpO3ZhciByPWYub2Zmc2V0V2lkdGg7cmV0dXJuIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKSxyfXQuZXhwb3J0cz1sO3ZhciBvPS9eKFstK10/XFxkKlxcLj9cXGQrKSglfFthLXpdKykkLyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT17bWVkaXVtOjQsbm9uZTowLHRoaWNrOjYsdGhpbjoyfSxzPS9eYm9yZGVyKEJvdHRvbXxMZWZ0fFJpZ2h0fFRvcClXaWR0aCQvfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PXthbGlnbkNvbnRlbnQ6XCJzdHJldGNoXCIsYWxpZ25JdGVtczpcInN0cmV0Y2hcIixhbGlnblNlbGY6XCJhdXRvXCIsYm9yZGVyQm90dG9tU3R5bGU6XCJub25lXCIsYm9yZGVyQm90dG9tV2lkdGg6MCxib3JkZXJMZWZ0U3R5bGU6XCJub25lXCIsYm9yZGVyTGVmdFdpZHRoOjAsYm9yZGVyUmlnaHRTdHlsZTpcIm5vbmVcIixib3JkZXJSaWdodFdpZHRoOjAsYm9yZGVyVG9wU3R5bGU6XCJub25lXCIsYm9yZGVyVG9wV2lkdGg6MCxib3hTaXppbmc6XCJjb250ZW50LWJveFwiLGRpc3BsYXk6XCJpbmxpbmVcIixmbGV4QmFzaXM6XCJhdXRvXCIsZmxleERpcmVjdGlvbjpcInJvd1wiLGZsZXhHcm93OjAsZmxleFNocmluazoxLGZsZXhXcmFwOlwibm93cmFwXCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LXN0YXJ0XCIsaGVpZ2h0OlwiYXV0b1wiLG1hcmdpblRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpbkJvdHRvbTowLHBhZGRpbmdUb3A6MCxwYWRkaW5nUmlnaHQ6MCxwYWRkaW5nTGVmdDowLHBhZGRpbmdCb3R0b206MCxtYXhIZWlnaHQ6XCJub25lXCIsbWF4V2lkdGg6XCJub25lXCIsbWluSGVpZ2h0OjAsbWluV2lkdGg6MCxvcmRlcjowLHBvc2l0aW9uOlwic3RhdGljXCIsd2lkdGg6XCJhdXRvXCJ9LHI9ZSBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYocil7dmFyIGw9ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpLGk9bD9lLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIik6ZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIjtsfHxlLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIixpKTt2YXIgcz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKXx8e307Zih0LHMpO3ZhciBjPWUuY3VycmVudFN0eWxlfHx7fTtuKHQsYyksbyh0LGkpO2Zvcih2YXIgeSBpbiB0KXRbeV09YSh0LHksZSk7dmFyIHg9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0Lm9mZnNldEhlaWdodD14LmhlaWdodHx8ZS5vZmZzZXRIZWlnaHQsdC5vZmZzZXRXaWR0aD14LndpZHRofHxlLm9mZnNldFdpZHRofXZhciBTPXtlbGVtZW50OmUsc3R5bGU6dH07cmV0dXJuIFN9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7aWYobCllW3JdPXRbcl07ZWxzZXt2YXIgbj1yLnJlcGxhY2UoL1tBLVpdL2csXCItJCZcIikudG9Mb3dlckNhc2UoKSxvPW4gaW4gdDtvJiYoZVtyXT10W25dKX19dmFyIGY9XCItanMtZGlzcGxheVwiaW4gdDtmJiYoZS5kaXNwbGF5PXRbXCItanMtZGlzcGxheVwiXSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcjtyPWkuZXhlYyh0KTspe3ZhciBsPXJbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tW2Etel0vZyxmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfSk7ZVtsXT1yWzJdfX1mdW5jdGlvbiBmKGUsdCl7Zm9yKHZhciByIGluIGUpe3ZhciBsPXIgaW4gdDtsJiYhcy50ZXN0KHIpJiYoZVtyXT10W3JdKX19dC5leHBvcnRzPWw7dmFyIGk9LyhbXlxcczo7XSspXFxzKjpcXHMqKFteO10rPylcXHMqKDt8JCkvZyxzPS9eKGFsaWduU2VsZnxoZWlnaHR8d2lkdGgpJC8sYT1lKFwiLi9nZXRDb21wdXRlZExlbmd0aFwiKX0se1wiLi9nZXRDb21wdXRlZExlbmd0aFwiOjE0fV0sMTY6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe3ZhciB0PVtdO3JldHVybiBuKGUsdCksdH1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciByLGw9byhlKSxpPVtdLHM9LTE7cj1lLmNoaWxkTm9kZXNbKytzXTspe3ZhciBhPTM9PT1yLm5vZGVUeXBlJiYhL15cXHMqJC8udGVzdChyLm5vZGVWYWx1ZSk7aWYobCYmYSl7dmFyIGM9cjtyPWUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmbGV4LWl0ZW1cIiksYyksci5hcHBlbmRDaGlsZChjKX12YXIgeT1yIGluc3RhbmNlb2YgRWxlbWVudDtpZih5KXt2YXIgeD1uKHIsdCk7aWYobCl7dmFyIFM9ci5zdHlsZTtTLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIixTLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix4LnN0eWxlPWYocikuc3R5bGUsaS5wdXNoKHgpfX19dmFyIG09e2VsZW1lbnQ6ZSxjaGlsZHJlbjppfTtyZXR1cm4gbCYmKG0uc3R5bGU9ZihlKS5zdHlsZSx0LnB1c2gobSkpLG19ZnVuY3Rpb24gbyhlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWxlbWVudCxyPXQmJmUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxsPXQmJmUuY3VycmVudFN0eWxlJiZlLmN1cnJlbnRTdHlsZVtcIi1qcy1kaXNwbGF5XCJdLG49aS50ZXN0KHIpfHxzLnRlc3QobCk7cmV0dXJuIG59dC5leHBvcnRzPWw7dmFyIGY9ZShcIi4uL3JlYWRcIiksaT0vKF58OylcXHMqZGlzcGxheVxccyo6XFxzKihpbmxpbmUtKT9mbGV4XFxzKig7fCQpL2kscz0vXihpbmxpbmUtKT9mbGV4JC9pfSx7XCIuLi9yZWFkXCI6MTV9XSwxNzpbZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIGwoZSl7byhlKTt2YXIgdD1lLmVsZW1lbnQuc3R5bGUscj1cImlubGluZVwiPT09ZS5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTt0LmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsdC5kaXNwbGF5PVwiYmxvY2tcIix0LnBvc2l0aW9uPVwicmVsYXRpdmVcIix0LndpZHRoPW4oZS5mbGV4U3R5bGVbclswXV0tZS5mbGV4U3R5bGVbclswXStcIklubmVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckFmdGVyXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclswXStcIkJvcmRlckFmdGVyXCJdKSx0LmhlaWdodD1uKGUuZmxleFN0eWxlW3JbMV1dLWUuZmxleFN0eWxlW3JbMV0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMV0rXCJCb3JkZXJBZnRlclwiXSk7Zm9yKHZhciBsLGY9LTE7bD1lLmNoaWxkcmVuWysrZl07KXt2YXIgaT1sLmVsZW1lbnQuc3R5bGUscz1cImlubGluZVwiPT09bC5tYWluQXhpcz9bXCJtYWluXCIsXCJjcm9zc1wiXTpbXCJjcm9zc1wiLFwibWFpblwiXTtpLmJveFNpemluZz1cImNvbnRlbnQtYm94XCIsaS5kaXNwbGF5PVwiYmxvY2tcIixpLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMF1dJiYoaS53aWR0aD1uKGwuZmxleFN0eWxlW3NbMF1dLWwuZmxleFN0eWxlW3NbMF0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMF0rXCJCb3JkZXJBZnRlclwiXSkpLFwiYXV0b1wiIT09bC5mbGV4U3R5bGVbc1sxXV0mJihpLmhlaWdodD1uKGwuZmxleFN0eWxlW3NbMV1dLWwuZmxleFN0eWxlW3NbMV0rXCJJbm5lckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJBZnRlclwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQmVmb3JlXCJdLWwuZmxleFN0eWxlW3NbMV0rXCJCb3JkZXJBZnRlclwiXSkpLGkudG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIlN0YXJ0XCJdKSxpLmxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiU3RhcnRcIl0pLGkubWFyZ2luVG9wPW4obC5mbGV4U3R5bGVbc1sxXStcIkJlZm9yZVwiXSksaS5tYXJnaW5SaWdodD1uKGwuZmxleFN0eWxlW3NbMF0rXCJBZnRlclwiXSksaS5tYXJnaW5Cb3R0b209bihsLmZsZXhTdHlsZVtzWzFdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luTGVmdD1uKGwuZmxleFN0eWxlW3NbMF0rXCJCZWZvcmVcIl0pfX1mdW5jdGlvbiBuKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP2U6TWF0aC5tYXgoZSwwKStcInB4XCJ9dC5leHBvcnRzPWw7dmFyIG89ZShcIi4uL2ZsZXhib3hcIil9LHtcIi4uL2ZsZXhib3hcIjo3fV0sMTg6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZVsrK3JdOyluKHQpfXQuZXhwb3J0cz1sO3ZhciBuPWUoXCIuLi93cml0ZVwiKX0se1wiLi4vd3JpdGVcIjoxN31dfSx7fSxbMTNdKSgxMyl9KTsiLCIvKlxuICogRnV6enlcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9teW9yay9mdXp6eVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBNYXR0IFlvcmtcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG4oZnVuY3Rpb24oKSB7XG5cbnZhciByb290ID0gdGhpcztcblxudmFyIGZ1enp5ID0ge307XG5cbi8vIFVzZSBpbiBub2RlIG9yIGluIGJyb3dzZXJcbmlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdXp6eTtcbn0gZWxzZSB7XG4gIHJvb3QuZnV6enkgPSBmdXp6eTtcbn1cblxuLy8gUmV0dXJuIGFsbCBlbGVtZW50cyBvZiBgYXJyYXlgIHRoYXQgaGF2ZSBhIGZ1enp5XG4vLyBtYXRjaCBhZ2FpbnN0IGBwYXR0ZXJuYC5cbmZ1enp5LnNpbXBsZUZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIGZ1enp5LnRlc3QocGF0dGVybiwgc3RyKTtcbiAgfSk7XG59O1xuXG4vLyBEb2VzIGBwYXR0ZXJuYCBmdXp6eSBtYXRjaCBgc3RyYD9cbmZ1enp5LnRlc3QgPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIpIHtcbiAgcmV0dXJuIGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0cikgIT09IG51bGw7XG59O1xuXG4vLyBJZiBgcGF0dGVybmAgbWF0Y2hlcyBgc3RyYCwgd3JhcCBlYWNoIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gaW4gYG9wdHMucHJlYCBhbmQgYG9wdHMucG9zdGAuIElmIG5vIG1hdGNoLCByZXR1cm4gbnVsbFxuZnV6enkubWF0Y2ggPSBmdW5jdGlvbihwYXR0ZXJuLCBzdHIsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBwYXR0ZXJuSWR4ID0gMFxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGxlbiA9IHN0ci5sZW5ndGhcbiAgICAsIHRvdGFsU2NvcmUgPSAwXG4gICAgLCBjdXJyU2NvcmUgPSAwXG4gICAgLy8gcHJlZml4XG4gICAgLCBwcmUgPSBvcHRzLnByZSB8fCAnJ1xuICAgIC8vIHN1ZmZpeFxuICAgICwgcG9zdCA9IG9wdHMucG9zdCB8fCAnJ1xuICAgIC8vIFN0cmluZyB0byBjb21wYXJlIGFnYWluc3QuIFRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGVcbiAgICAvLyByYXcgc3RyaW5nXG4gICAgLCBjb21wYXJlU3RyaW5nID0gIG9wdHMuY2FzZVNlbnNpdGl2ZSAmJiBzdHIgfHwgc3RyLnRvTG93ZXJDYXNlKClcbiAgICAsIGNoO1xuXG4gIHBhdHRlcm4gPSBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgcGF0dGVybiB8fCBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7XG5cbiAgLy8gRm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGVpdGhlciBhZGQgaXQgdG8gdGhlIHJlc3VsdFxuICAvLyBvciB3cmFwIGluIHRlbXBsYXRlIGlmIGl0J3MgdGhlIG5leHQgc3RyaW5nIGluIHRoZSBwYXR0ZXJuXG4gIGZvcih2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNoID0gc3RyW2lkeF07XG4gICAgaWYoY29tcGFyZVN0cmluZ1tpZHhdID09PSBwYXR0ZXJuW3BhdHRlcm5JZHhdKSB7XG4gICAgICBjaCA9IHByZSArIGNoICsgcG9zdDtcbiAgICAgIHBhdHRlcm5JZHggKz0gMTtcblxuICAgICAgLy8gY29uc2VjdXRpdmUgY2hhcmFjdGVycyBzaG91bGQgaW5jcmVhc2UgdGhlIHNjb3JlIG1vcmUgdGhhbiBsaW5lYXJseVxuICAgICAgY3VyclNjb3JlICs9IDEgKyBjdXJyU2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJTY29yZSA9IDA7XG4gICAgfVxuICAgIHRvdGFsU2NvcmUgKz0gY3VyclNjb3JlO1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGNoO1xuICB9XG5cbiAgLy8gcmV0dXJuIHJlbmRlcmVkIHN0cmluZyBpZiB3ZSBoYXZlIGEgbWF0Y2ggZm9yIGV2ZXJ5IGNoYXJcbiAgaWYocGF0dGVybklkeCA9PT0gcGF0dGVybi5sZW5ndGgpIHtcbiAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGFuIGV4YWN0IG1hdGNoIHdpdGggcGF0dGVybiwgdG90YWxTY29yZSBzaG91bGQgYmUgbWF4ZWRcbiAgICB0b3RhbFNjb3JlID0gKGNvbXBhcmVTdHJpbmcgPT09IHBhdHRlcm4pID8gSW5maW5pdHkgOiB0b3RhbFNjb3JlO1xuICAgIHJldHVybiB7cmVuZGVyZWQ6IHJlc3VsdC5qb2luKCcnKSwgc2NvcmU6IHRvdGFsU2NvcmV9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vLyBUaGUgbm9ybWFsIGVudHJ5IHBvaW50LiBGaWx0ZXJzIGBhcnJgIGZvciBtYXRjaGVzIGFnYWluc3QgYHBhdHRlcm5gLlxuLy8gSXQgcmV0dXJucyBhbiBhcnJheSB3aXRoIG1hdGNoaW5nIHZhbHVlcyBvZiB0aGUgdHlwZTpcbi8vXG4vLyAgICAgW3tcbi8vICAgICAgICAgc3RyaW5nOiAgICc8Yj5sYWgnIC8vIFRoZSByZW5kZXJlZCBzdHJpbmdcbi8vICAgICAgICwgaW5kZXg6ICAgIDIgICAgICAgIC8vIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCBpbiBgYXJyYFxuLy8gICAgICAgLCBvcmlnaW5hbDogJ2JsYWgnICAgLy8gVGhlIG9yaWdpbmFsIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICB9XVxuLy9cbi8vIGBvcHRzYCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCBiYWcuIERldGFpbHM6XG4vL1xuLy8gICAgb3B0cyA9IHtcbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGJlZm9yZSBhIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAgIHByZTogICAgICc8Yj4nXG4vL1xuLy8gICAgICAgIC8vIHN0cmluZyB0byBwdXQgYWZ0ZXIgbWF0Y2hpbmcgY2hhcmFjdGVyXG4vLyAgICAgICwgcG9zdDogICAgJzwvYj4nXG4vL1xuLy8gICAgICAgIC8vIE9wdGlvbmFsIGZ1bmN0aW9uLiBJbnB1dCBpcyBhbiBlbnRyeSBpbiB0aGUgZ2l2ZW4gYXJyYCxcbi8vICAgICAgICAvLyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdG8gdGVzdCBgcGF0dGVybmAgYWdhaW5zdC5cbi8vICAgICAgICAvLyBJbiB0aGlzIGV4YW1wbGUsIGlmIGBhcnIgPSBbe2NyeWluZzogJ2tvYWxhJ31dYCB3ZSB3b3VsZCByZXR1cm5cbi8vICAgICAgICAvLyAna29hbGEnLlxuLy8gICAgICAsIGV4dHJhY3Q6IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnLmNyeWluZzsgfVxuLy8gICAgfVxuZnV6enkuZmlsdGVyID0gZnVuY3Rpb24ocGF0dGVybiwgYXJyLCBvcHRzKSB7XG4gIGlmKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgcmV0dXJuIGFyclxuICAgIC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgZWxlbWVudCwgaWR4LCBhcnIpIHtcbiAgICAgIHZhciBzdHIgPSBlbGVtZW50O1xuICAgICAgaWYob3B0cy5leHRyYWN0KSB7XG4gICAgICAgIHN0ciA9IG9wdHMuZXh0cmFjdChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHZhciByZW5kZXJlZCA9IGZ1enp5Lm1hdGNoKHBhdHRlcm4sIHN0ciwgb3B0cyk7XG4gICAgICBpZihyZW5kZXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHByZXZbcHJldi5sZW5ndGhdID0ge1xuICAgICAgICAgICAgc3RyaW5nOiByZW5kZXJlZC5yZW5kZXJlZFxuICAgICAgICAgICwgc2NvcmU6IHJlbmRlcmVkLnNjb3JlXG4gICAgICAgICAgLCBpbmRleDogaWR4XG4gICAgICAgICAgLCBvcmlnaW5hbDogZWxlbWVudFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10pXG5cbiAgICAvLyBTb3J0IGJ5IHNjb3JlLiBCcm93c2VycyBhcmUgaW5jb25zaXN0ZW50IHdydCBzdGFibGUvdW5zdGFibGVcbiAgICAvLyBzb3J0aW5nLCBzbyBmb3JjZSBzdGFibGUgYnkgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBjYXNlIG9mIHRpZS5cbiAgICAvLyBTZWUgaHR0cDovL29mYi5uZXQvfnNldGhtbC9pcy1zb3J0LXN0YWJsZS5odG1sXG4gICAgLnNvcnQoZnVuY3Rpb24oYSxiKSB7XG4gICAgICB2YXIgY29tcGFyZSA9IGIuc2NvcmUgLSBhLnNjb3JlO1xuICAgICAgaWYoY29tcGFyZSkgcmV0dXJuIGNvbXBhcmU7XG4gICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgfSk7XG59O1xuXG5cbn0oKSk7XG5cbiIsIi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG9cbiAgICAgKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXRcbiAgICAgKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudFxuICAgICAqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlXG4gICAgICogaHR0cDovL3d3dy53dGZwbC5uZXQvIGZvciBtb3JlIGRldGFpbHMuICovXG4ndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGxlZnRQYWQ7XG5cbnZhciBjYWNoZSA9IFtcbiAgJycsXG4gICcgJyxcbiAgJyAgJyxcbiAgJyAgICcsXG4gICcgICAgJyxcbiAgJyAgICAgJyxcbiAgJyAgICAgICcsXG4gICcgICAgICAgJyxcbiAgJyAgICAgICAgJyxcbiAgJyAgICAgICAgICdcbl07XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbGVuLCBjaCkge1xuICAvLyBjb252ZXJ0IGBzdHJgIHRvIGBzdHJpbmdgXG4gIHN0ciA9IHN0ciArICcnO1xuICAvLyBgbGVuYCBpcyB0aGUgYHBhZGAncyBsZW5ndGggbm93XG4gIGxlbiA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIC8vIGRvZXNuJ3QgbmVlZCB0byBwYWRcbiAgaWYgKGxlbiA8PSAwKSByZXR1cm4gc3RyO1xuICAvLyBgY2hgIGRlZmF1bHRzIHRvIGAnICdgXG4gIGlmICghY2ggJiYgY2ggIT09IDApIGNoID0gJyAnO1xuICAvLyBjb252ZXJ0IGBjaGAgdG8gYHN0cmluZ2BcbiAgY2ggPSBjaCArICcnO1xuICAvLyBjYWNoZSBjb21tb24gdXNlIGNhc2VzXG4gIGlmIChjaCA9PT0gJyAnICYmIGxlbiA8IDEwKSByZXR1cm4gY2FjaGVbbGVuXSArIHN0cjtcbiAgLy8gYHBhZGAgc3RhcnRzIHdpdGggYW4gZW1wdHkgc3RyaW5nXG4gIHZhciBwYWQgPSAnJztcbiAgLy8gbG9vcFxuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGFkZCBgY2hgIHRvIGBwYWRgIGlmIGBsZW5gIGlzIG9kZFxuICAgIGlmIChsZW4gJiAxKSBwYWQgKz0gY2g7XG4gICAgLy8gZGl2aWRlIGBsZW5gIGJ5IDIsIGRpdGNoIHRoZSByZW1haW5kZXJcbiAgICBsZW4gPj49IDE7XG4gICAgLy8gXCJkb3VibGVcIiB0aGUgYGNoYCBzbyB0aGlzIG9wZXJhdGlvbiBjb3VudCBncm93cyBsb2dhcml0aG1pY2FsbHkgb24gYGxlbmBcbiAgICAvLyBlYWNoIHRpbWUgYGNoYCBpcyBcImRvdWJsZWRcIiwgdGhlIGBsZW5gIHdvdWxkIG5lZWQgdG8gYmUgXCJkb3VibGVkXCIgdG9vXG4gICAgLy8gc2ltaWxhciB0byBmaW5kaW5nIGEgdmFsdWUgaW4gYmluYXJ5IHNlYXJjaCB0cmVlLCBoZW5jZSBPKGxvZyhuKSlcbiAgICBpZiAobGVuKSBjaCArPSBjaDtcbiAgICAvLyBgbGVuYCBpcyAwLCBleGl0IHRoZSBsb29wXG4gICAgZWxzZSBicmVhaztcbiAgfVxuICAvLyBwYWQgYHN0cmAhXG4gIHJldHVybiBwYWQgKyBzdHI7XG59XG4iLCJjb25zdCBzaW50ZXJrbGFhcyA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc29sZS5sb2coJ3NpbnRlcmtsYWFzIGVhc3RlciBlZ2cgYWN0aXZhdGVkJylcbiAgY29uc3Qgc2VhcmNoTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gnKVxuICBjb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nKVxuICBjb25zdCBhdXRvY29tcGxldGVOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmF1dG9jb21wbGV0ZScpXG4gIGxldCBhdXRvY29tcGxldGUgPSBmYWxzZVxuICBjb25zdCBseXJpY3MgPSBbXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAwfSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiAwLjN9LFxuICAgICAge3dvb3JkOiAna2xvcHQgJywgdGltZTogMC42fSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogMC45fSxcbiAgICAgIHt3b29yZDogJ2tpbmQnLCB0aW1lOiAxLjJ9LFxuICAgICAge3dvb3JkOiAnXFwncmVuJywgdGltZTogMS41fVxuICAgIF0sXG4gICAgW1xuICAgICAge3dvb3JkOiAnSG9vciAnLCB0aW1lOiAxLjh9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDIuMX0sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAyLjV9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAyLjh9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDMuMX0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAzLjR9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDMuN30sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogNH0sXG4gICAgICB7d29vcmQ6ICd0aWt0ICcsIHRpbWU6IDQuM30sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDQuNn0sXG4gICAgICB7d29vcmQ6ICd6YWNodCcsIHRpbWU6IDQuOH0sXG4gICAgICB7d29vcmQ6ICdqZXMgJywgdGltZTogNS4zfSxcbiAgICAgIHt3b29yZDogJ3RlZ2VuICcsIHRpbWU6IDUuNX0sXG4gICAgICB7d29vcmQ6ICdcXCd0ICcsIHRpbWU6IDYuMX0sXG4gICAgICB7d29vcmQ6ICdyYWFtICcsIHRpbWU6IDYuMn1cbiAgICBdXG4gIF1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG5cbiAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgaW5wdXROb2RlLnBsYWNlaG9sZGVyID0gJydcblxuICBseXJpY3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgIHJvdy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAod29yZEluZGV4ID09PSAwKSBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgKz0gd29yZC53b29yZFxuICAgICAgfSwgd29yZC50aW1lICogMTAwMClcbiAgICAgIGlmIChseXJpY3MubGVuZ3RoID09PSByb3dJbmRleCArIDEgJiZcbiAgICAgICAgICBseXJpY3Nbcm93SW5kZXhdLmxlbmd0aCA9PT0gd29yZEluZGV4ICsgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoaW5wdXROb2RlLnZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgaW5wdXROb2RlLnZhbHVlID0gb3JpZ2luYWxWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnWm9la2VuJ1xuICAgICAgICAgIGF1dG9jb21wbGV0ZSA9IHRydWVcbiAgICAgICAgfSwgd29yZC50aW1lICogMTAwMCArIDEwMDApXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlTHlyaWNzID0gW1xuICAgICAgYCd0IElzIGVlbiB2cmVlbWQnbGluZyB6ZWtlcixgLFxuICAgICAgYGRpZSB2ZXJkd2FhbHQgaXMgemVrZXIuYCxcbiAgICAgIGAnayBaYWwgZWVucyBldmVuIHZyYWdlbiBuYWFyIHppam4gbmFhbTpgXG4gICAgXVxuXG4gICAgYXV0b2NvbXBsZXRlTHlyaWNzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpXG4gICAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IHJvd1xuICAgICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICAgIH0pXG4gIH0pXG5cbiAgaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXV0b2NvbXBsZXRlKSByZXR1cm5cbiAgICBpZiAoaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWNvbGFhcycgfHxcbiAgICAgICAgaW5wdXROb2RlLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdzaW50IG5pa29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnRuaWtvbGFhcycpIHtcbiAgICAgIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9qc09pS0oza0tYTT9zdGFydD0zMCdcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBzaW50ZXJrbGFhcyB9XG4iLCJ2YXIgbGVmdFBhZCA9IHJlcXVpcmUoJ2xlZnQtcGFkJylcbnZhciBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcblxuZnVuY3Rpb24gZ2V0VVJMT2ZVc2VycyAod2Vla09mZnNldCwgdHlwZSwgaWQpIHtcbiAgcmV0dXJuIGAvLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L21lZXRpbmdwb2ludFByb3h5L1Jvb3N0ZXJzLUFMJTJGZG9jJTJGZGFncm9vc3RlcnMlMkZgICtcbiAgICAgIGAkeyhnZXRXZWVrKCkgKyB3ZWVrT2Zmc2V0KX0lMkYke3R5cGV9JTJGJHt0eXBlfSR7bGVmdFBhZChpZCwgNSwgJzAnKX0uaHRtYFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVSTE9mVXNlcnNcbiIsIi8vIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cubWVldGluZ3BvaW50bWNvLm5sL1Jvb3N0ZXJzLUFML2RvYy9kYWdyb29zdGVycy91bnRpc3NjcmlwdHMuanMsXG4vLyB3ZXJlIHVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgdGhleSBkbyB0byBiZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGdldCB0aGUgc2FtZVxuLy8gd2VlayBudW1iZXIuXG5mdW5jdGlvbiBnZXRXZWVrICgpIHtcbiAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGlzIGRhdGUgb2JqZWN0XG4gIGNvbnN0IHRhcmdldCA9IG5ldyBEYXRlKClcblxuICAvLyBJU08gd2VlayBkYXRlIHdlZWtzIHN0YXJ0IG9uIG1vbmRheVxuICAvLyBzbyBjb3JyZWN0IHRoZSBkYXkgbnVtYmVyXG4gIGNvbnN0IGRheU5yID0gKHRhcmdldC5nZXREYXkoKSArIDYpICUgN1xuXG4gIC8vIElTTyA4NjAxIHN0YXRlcyB0aGF0IHdlZWsgMSBpcyB0aGUgd2Vla1xuICAvLyB3aXRoIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGF0IHllYXIuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IGRhdGUgdG8gdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICB0YXJnZXQuc2V0RGF0ZSh0YXJnZXQuZ2V0RGF0ZSgpIC0gZGF5TnIgKyAzKVxuXG4gIC8vIFN0b3JlIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGRhdGVcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IHRhcmdldC52YWx1ZU9mKClcblxuICAvLyBTZXQgdGhlIHRhcmdldCB0byB0aGUgZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXJcbiAgLy8gRmlyc3Qgc2V0IHRoZSB0YXJnZXQgdG8gamFudWFyeSBmaXJzdFxuICB0YXJnZXQuc2V0TW9udGgoMCwgMSlcbiAgLy8gTm90IGEgdGh1cnNkYXk/IENvcnJlY3QgdGhlIGRhdGUgdG8gdGhlIG5leHQgdGh1cnNkYXlcbiAgaWYgKHRhcmdldC5nZXREYXkoKSAhPT0gNCkge1xuICAgIHRhcmdldC5zZXRNb250aCgwLCAxICsgKCg0IC0gdGFyZ2V0LmdldERheSgpKSArIDcpICUgNylcbiAgfVxuXG4gIC8vIFRoZSB3ZWVrbnVtYmVyIGlzIHRoZSBudW1iZXIgb2Ygd2Vla3MgYmV0d2VlbiB0aGVcbiAgLy8gZmlyc3QgdGh1cnNkYXkgb2YgdGhlIHllYXIgYW5kIHRoZSB0aHVyc2RheSBpbiB0aGUgdGFyZ2V0IHdlZWtcbiAgcmV0dXJuIDEgKyBNYXRoLmNlaWwoKGZpcnN0VGh1cnNkYXkgLSB0YXJnZXQpIC8gNjA0ODAwMDAwKSAvLyA2MDQ4MDAwMDAgPSA3ICogMjQgKiAzNjAwICogMTAwMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFdlZWtcbiIsIi8qIGdsb2JhbCBnYSBGTEFHUyBVU0VSUyAqL1xuXG5yZXF1aXJlKCdmbGV4aWJpbGl0eScpXG5cbmNvbnN0IGZ1enp5ID0gcmVxdWlyZSgnZnV6enknKVxuLy8gY29uc3QgZ2V0VXNlcnMgPSByZXF1aXJlKCcuL2dldFVzZXJzJylcbmNvbnN0IGdldFVSTE9mVXNlciA9IHJlcXVpcmUoJy4vZ2V0VVJMT2ZVc2VyJylcbmNvbnN0IHJlbW92ZURpYWNyaXRpY3MgPSByZXF1aXJlKCdkaWFjcml0aWNzJykucmVtb3ZlXG5jb25zdCBnZXRXZWVrID0gcmVxdWlyZSgnLi9nZXRXZWVrJylcbmNvbnN0IGVhc3RlckVnZ3MgPSByZXF1aXJlKCcuL2Vhc3RlckVnZ3MnKVxuXG5jb25zdCBzZWFyY2hOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlYXJjaCcpXG5jb25zdCBpbnB1dE5vZGUgPSBzZWFyY2hOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbmxldCBpbnB1dEV2ZW50U3RyXG5pZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgIT09IC0xIHx8XG4gICAgbmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignVHJpZGVudC8nKSA+IDApIHtcbiAgaW5wdXRFdmVudFN0ciA9ICd0ZXh0aW5wdXQnIC8vIElFIDYtMTFcbn0gZWxzZSB7XG4gIGlucHV0RXZlbnRTdHIgPSAnaW5wdXQnIC8vIG5vcm1hbCBicm93c2Vyc1xufVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoaW5wdXRFdmVudFN0ciwgZnVuY3Rpb24gKGUpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCduby1pbnB1dCcpXG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbiAgaWYgKGlucHV0Tm9kZS52YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm5cblxuICBzZWxlY3RlZFJlc3VsdCA9IC0xXG4gIHJlc3VsdHMgPSBmdXp6eS5maWx0ZXIocmVtb3ZlRGlhY3JpdGljcyhpbnB1dE5vZGUudmFsdWUpLCBVU0VSUywge1xuICAgIGV4dHJhY3Q6IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlRGlhY3JpdGljcyhlbC52YWx1ZSkgfVxuICB9KS5zbGljZSgwLCA3KVxuXG4gIHJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICByZXN1bHROb2RlLmlubmVySFRNTCA9IGAke3Jlc3VsdC5vcmlnaW5hbC52YWx1ZX1gXG4gICAgYXV0b2NvbXBsZXRlTm9kZS5hcHBlbmRDaGlsZChyZXN1bHROb2RlKVxuICB9KVxufSlcblxuc2VhcmNoTm9kZS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBzdWJtaXRGb3JtKVxuXG5mdW5jdGlvbiBzdWJtaXRGb3JtIChlKSB7XG4gIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KClcbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW5kZXhJblJlc3VsdCA9IHNlbGVjdGVkUmVzdWx0ID09PSAtMSA/IDAgOiBzZWxlY3RlZFJlc3VsdFxuICAgIHNlbGVjdGVkVXNlciA9IFVTRVJTW3Jlc3VsdHNbaW5kZXhJblJlc3VsdF0uaW5kZXhdXG4gIH1cbiAgaWYgKHNlbGVjdGVkVXNlciA9PSBudWxsKSByZXR1cm5cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NlYXJjaGVkJylcblxuICB1cGRhdGVGYXZOb2RlKClcblxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuXG4gIGlucHV0Tm9kZS5ibHVyKClcblxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcblxuICBsZXQgZXZlbnRBY3Rpb25cbiAgc3dpdGNoIChzZWxlY3RlZFVzZXIudHlwZSkge1xuICAgIGNhc2UgJ2MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnQ2xhc3MnXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3QnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnVGVhY2hlcidcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncic6XG4gICAgICBldmVudEFjdGlvbiA9ICdSb29tJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdzJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1N0dWRlbnQnXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGV2ZW50TGFiZWwgPSBzZWxlY3RlZFVzZXIudmFsdWVcblxuICBnYShmdW5jdGlvbiAoKSB7XG4gICAgZ2EoJ3NlbmQnLCB7IGhpdFR5cGU6ICdldmVudCcsIGV2ZW50Q2F0ZWdvcnk6ICdzZWFyY2gnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufVxuXG5hdXRvY29tcGxldGVOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgaWYgKGF1dG9jb21wbGV0ZU5vZGUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgc2VsZWN0ZWRSZXN1bHQgPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcywgZS50YXJnZXQpXG4gICAgc3VibWl0Rm9ybSgpXG4gIH1cbn0pXG5cbnByZXZCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldC0tXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5uZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBvZmZzZXQrK1xuICB1cGRhdGVXZWVrVGV4dCgpXG4gIHN1Ym1pdEZvcm0oKVxufSlcblxuaW5wdXROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpbnB1dE5vZGUuc2VsZWN0KClcbn0pXG5cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgZHJhd2luZyBmb2N1cyBvbiBpdCAoc2FmYXJpKVxuICAvLyB0aGlzIHdpbGwgcmVtb3ZlZCBzZWxlY3Rpb24gZXZlbiB3aGVuIGZvY3VzaW5nIGFuIGlmcmFtZSAoY2hyb21lKVxuICBjb25zdCBvbGRWYWx1ZSA9IGlucHV0Tm9kZS52YWx1ZVxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUudmFsdWUgPSBvbGRWYWx1ZVxuXG4gIC8vIHRoaXMgd2lsbCBoaWRlIHRoZSBrZXlib2FyZCAoaU9TIHNhZmFyaSlcbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKClcbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIChlKSB7XG4gIGF1dG9jb21wbGV0ZU5vZGUuaW5uZXJIVE1MID0gJydcbn0pXG5cbmZhdk5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGNoYW5nZUZhdihmYWxzZSlcbiAgfSBlbHNlIHtcbiAgICBjaGFuZ2VGYXYodHJ1ZSlcbiAgfVxufSlcblxuY29uc3QgY3VycmVudEZhdiA9IGdldEN1cnJlbnRGYXYoKVxuXG5pZiAoY3VycmVudEZhdikge1xuICBzZWxlY3RlZFVzZXIgPSBjdXJyZW50RmF2XG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBzY2hlZHVsZUlmcmFtZS5zcmMgPSBnZXRVUkxPZlVzZXIob2Zmc2V0LCBzZWxlY3RlZFVzZXIudHlwZSwgc2VsZWN0ZWRVc2VyLmluZGV4ICsgMSlcbiAgdXBkYXRlRmF2Tm9kZSgpXG5cbiAgbGV0IGV2ZW50QWN0aW9uXG4gIHN3aXRjaCAoc2VsZWN0ZWRVc2VyLnR5cGUpIHtcbiAgICBjYXNlICdjJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ0NsYXNzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICd0JzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1RlYWNoZXInXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3InOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnUm9vbSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdTdHVkZW50J1xuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBldmVudExhYmVsID0gc2VsZWN0ZWRVc2VyLnZhbHVlXG5cbiAgZ2EoZnVuY3Rpb24gKCkge1xuICAgIGdhKCdzZW5kJywgeyBoaXRUeXBlOiAnZXZlbnQnLCBldmVudENhdGVnb3J5OiAnc2VhcmNoIGZhdicsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59IGVsc2UgaWYgKGlucHV0Tm9kZS52YWx1ZSA9PT0gJycpIHtcbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCduby1pbnB1dCcpXG4gIGlucHV0Tm9kZS5mb2N1cygpXG59XG5cbmlmIChzY2hlZHVsZUlmcmFtZS5zcmMgIT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0= -- cgit v1.1